最初, 类的模型属性 位置 定义如下:

location = models.ForeignKey('Location', related_name='+', null=True, on_delete=models.SET_NULL)

然后它被重新定义为:
location = models.ForeignKey('Location', related_name='+', on_delete=models.PROTECT)

由于定义的变化,我执行了 South 的模式迁移。南回应了



我选择了选项“2”并提供了现有位置的 PK(整数)。

但是当我运行迁移时,出现以下错误:



我不明白为什么在我提供了有效的默认位置 PK 时会出现此错误。这真是令人难以置信。请帮忙~谢谢。

迁移规范:
def forwards(self, orm):
    # Changing field 'Item.location'
    db.alter_column('lend_borrow_item', 'location_id', self.gf('django.db.models.fields.related.ForeignKey')(default=11, to=orm['app_name.Location']))
def backwards(self, orm):
    # Changing field 'Item.location'
    db.alter_column('lend_borrow_item', 'location_id', self.gf('django.db.models.fields.related.ForeignKey')(null=True, to=orm['app_name.Location']))

models = {
    'app_name.location': {
        'Meta': {'ordering': "['name']", 'object_name': 'Location'},
        'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
        'name': ('django.db.models.fields.CharField', [], {'max_length': '20'})
    },
    'lend_borrow.item': {
        'Meta': {'object_name': 'Item'},
        'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
        'location': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'+'", 'to': "orm['app_name.Location']"}),
        'name': ('django.db.models.fields.CharField', [], {'max_length': '50'})
    }
}

最佳答案

这个问题好像是由 South Defect #627 引起的

关于django - 南 : Why the "column <colname> contains null values" error when a valid one-off default value has been provided,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8233282/

10-12 21:46