【发布时间】:2017-09-07 05:30:29
【问题描述】:
当我运行 ./manage.py migrate 时,会发生错误 django.db.utils.IntegrityError: NOT NULL constraint failed: app.area_id 。
models.py 是
class Area(models.Model):
name = models.CharField(max_length=20, verbose_name='area', null=True)
class User(models.Model):
name = models.CharField(max_length=200,null=True)
age = models.CharField(max_length=200,null=True)
area = models.ForeignKey('Area', default="")
class Prefecture(models.Model):
name = models.CharField(max_length=20, verbose_name='city')
area = models.ForeignKey('Area')
class City(models.Model):
name = models.CharField(max_length=20, verbose_name='region')
prefecture = models.ForeignKey('Prefecture')
class Price(models.Model):
name = models.CharField(max_length=20, verbose_name='price')
PRICE_RANGE = (
('a', 'under500'),
('b', '500-1000'),
('c', 'upper1000'),
)
price_range = models.CharField(max_length=1, choices=PRICE_RANGE)
city = models.ForeignKey('City')
当我写area = models.ForeignKey('Area')时,我得到了一个错误
您正在尝试在没有默认值的情况下向事务添加不可为空的字段“区域”;我们不能这样做(数据库需要一些东西来填充现有的行)。请选择一个修复:1) 现在提供一次性默认值(将在所有现有行上设置此列的 null 值)2) 退出,让我在 models.py 中添加一个默认值。
怎么了?我该如何解决这个问题?
现在 models.py 是
class Area(models.Model):
name = models.CharField(max_length=20, verbose_name='area', null=True)
class User(models.Model):
name = models.CharField(max_length=200,null=True)
age = models.CharField(max_length=200,null=True)
area = models.ForeignKey('Area', default="")
class Prefecture(models.Model):
name = models.CharField(max_length=20, verbose_name='city')
area = models.ForeignKey('Area', null=True, blank=True)
class City(models.Model):
name = models.CharField(max_length=20, verbose_name='region')
prefecture = models.ForeignKey('Prefecture', null=True, blank=True)
class Price(models.Model):
name = models.CharField(max_length=20, verbose_name='price')
PRICE_RANGE = (
('a', 'under500'),
('b', '500-1000'),
('c', 'upper1000'),
)
price_range = models.CharField(max_length=1, choices=PRICE_RANGE)
city = models.ForeignKey('City', null=True, blank=True)
我也遇到了同样的错误。我已经尝试过 cache.clear() 。
【问题讨论】: