我正在使用Django 2.1.2
我有两个型号Items
和Quotation
。
class Item(models.Model):
name = models.CharField(max_length=200)
def __str__(self):
return self.name
class Quotation(models.Model):
company = models.ForeignKey('Company', on_delete=models.CASCADE)
unit_rate = models.CharField(max_length=200)
item = models.ManyToManyField(Item)
def __str__(self):
return self.company.company_name
现在,当我添加Item时,它工作正常。
但当我试图在管理面板中添加报价时,它会给我null value in column "item_id" violates not-null constraint
我是姜戈的新手。如果有人能指出我缺少的东西,那就太好了。
看起来您可能已将Quotation.item
从ForeignKey
或OneToOneField
字段更改为ManyToManyField
字段。
进行此更改后,必须先运行manage.py makemigrations
,然后再运行manage.py migrate
来创建并运行必要的数据库迁移。请注意,Quotation.item_id
列中的任何现有数据都将被删除,除非您编写迁移以将数据复制到多对多字段。
我最近在一个客户端项目中遇到了这种情况。你猜怎么着,客户端开发人员在Django中修改了一个模型后忘记了进行迁移。
此错误通常是由于数据库而发生的。您可以在DB中检查表的详细信息,以确保向其传递null值的字段实际上是否可以为null。
例如。在Postgres-d table_name
;
我是怎么解决的?
python manage.py makemigrations
python manage.py migrate