我正在使用Django 2.1.2
我有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
我是Django的新手。如果有人可以指出我所缺少的东西,那就太好了。
答案 0 :(得分:1)
这是我最近在进行客户项目时发生的事情。猜猜是什么,客户端开发人员在Django中修改模型后忘记进行迁移。
通常由于数据库而发生此错误。您可以检查DB中的表详细信息,以确保将要传递空值的字段实际上是否可以为空。
例如在Postgres中-\d table_name
;
我如何解决?
python manage.py makemigrations
python manage.py migrate
答案 1 :(得分:0)
似乎您已将Quotation.item
从ForeignKey
或OneToOneField
更改为ManyToManyField
字段。
进行此更改后,必须先运行manage.py makemigrations
,然后运行manage.py migrate
来创建,然后运行必要的数据库迁移。请注意,除非您进行迁移以将数据复制到“多对多”字段中,否则Quotation.item_id
列中的所有现有数据都将被删除。