对于onetoone字段,键(id)=()仍然从表中引用



我的模型中有1到1个字段,当我在另一个表上删除数据时,我仍然需要将数据与其他字段链接。在我看来,我正在删除模型2实例,而它被删除了,我正在将completed设置为Tue,但这是一个错误。

型号.py

class Model1(models.Model):
model_2_attribute = models.OnetoOneField('Model2' on_delete=models.DO_NOTHING)
completed = model.BooleanField(default=False)

缺少默认值或model_2_attribute为null的选项。如果删除Model2,则Model1将具有无效关系。

选项1将默认值设置为null。如果删除Model2,则model_2_attribute将为"无"。

class Model1(models.Model):
model_2_attribute = models.OneToOneField('Model2', on_delete=models.SET_NULL, blank=True, null=True)

选项2将把completed字段移到Model2中,不要删除它。只将字段设置为True。

class Model1(models.Model):
model_2_attribute = models.OneToOneField('Model2', on_delete=models.DO_NOTHING)
class Model2(models.Model):
# your fields
completed = model.BooleanField(default=False)

然后,您可以筛选未完成的对象,如:

qs = Model1.objects.filter(model_2_attribute__completed=False)

最新更新