具有null = True的OneToOneField不允许空字段

时间:2012-12-28 11:48:06

标签: python sql django django-models

我有这两个课程:

class Bill(models.Model):
  date = models.DateField()
  total_amount_chf = models.DecimalField('Cost (in CHF)', max_digits=10, decimal_places=2)

class ProjectParticipation(models.Model):
  project = models.ForeignKey('Project')
  user = models.ForeignKey(User)
  is_admin = models.BooleanField()
  bill = models.OneToOneField(Bill, on_delete=models.SET_NULL, null=True, blank=True)

当我现在构建SQL数据库时,我在ProjectParticipation的表中得到以下字段:

 bill_id integer NOT NULL,
 CONSTRAINT expenses_projectparticipation_bill_id_fkey FOREIGN KEY (bill_id)
  REFERENCES expenses_bill (id) MATCH SIMPLE
  ON UPDATE NO ACTION ON DELETE NO ACTION DEFERRABLE INITIALLY DEFERRED,

现在当我想插入没有Bill的ProjectParticipation时,我得到一个“列中的空值”bill_id“违反了非空约束”。

该怎么办呢?

1 个答案:

答案 0 :(得分:6)

您可能在同步数据库之后添加了Null Constraint。删除数据库并重新同步数据库(如果您没有使用Django-South,否则请确保已迁移架构更改)