Django South - Create Not Null ForeignKey -
i have model
class mystery(models.model):     first = models.charfield(max_length=256)     second = models.charfield(max_length=256)     third = models.charfield(max_length=256)     player = models.foreignkey(player)   i added player foreignkey when try migrate using south seems can't create whith null=false. have message :
the field 'mystery.player' not have default specified, yet not null. since adding field, must specify default value use existing rows. to:
1. quit now, , add default field in models.py
2. specify one-off value use existing columns now
i use command :
manage.py schemamigration myapp --auto
thanks lot !
another option create data migration before adding foreignkey, in create new player instance specific id. sure that id not exist in database.
1.create data migration file
$ ./manage.py datamigration myapp add_player created 00xx_add_player.py   2.edit forwards , backwards methods of file:
def forwards(self, orm):     orm['myapp.player'].objects.create(name=u'very misterious player', id=34)  def backwards(self, orm):     # haven't tested 1 yet     orm['myapp.player'].objects.filter(id=34).delete()   3.add foreignkey mistery class , migrate schema again. ask default value data migration id, in example, 34.
 $ ./manage.py schemamigration --auto myapp  ? field 'mistery.player' not have default specified, yet not null.  ? since adding field, must specify default  ? value use existing rows. to:  ?  1. quit now, , add default field in models.py  ?  2. specify one-off value use existing columns  ? please select choice: 2  ? please enter python code one-off default value.  ? datetime module available, can e.g. datetime.date.today()  >>> 34  + added field player on myapp.mistery created 0010_auto__add_field_mistery_player.py. can apply migration with: ./manage.py migrate myapp   4.finally run migrate command , execute migrations in sequential order, inserting new player , updating mistery rows reference new player.