我正在尝试在pre_save
方法中设置不可为空的OneToOneField对象(尚未设置)。
class A(Model):
b = models.OneToOneField(B, on_delete=CASCADE)
@staticmethod
def pre_save(sender, instance, **kwargs):
try:
instance.b
except RelatedObjectDoesNotExist:
instance.b = B()
instance.b.save()
pre_save.connect(A.pre_save, A)
即使创建了B对象并将其存储在数据库中,我也会收到此错误,好像A对象没有指向B
django.db.utils.IntegrityError: NOT NULL constraint failed: app_a.b_id
如果我在字段定义中设置了null=True
,那么我当然不会遇到NOT NULL constraint failed
错误。但是,A对象仍然不存储对B对象的引用。
我猜这是因为在原始的A对象中没有B引用,所以当以某种方式执行save时,它不认为应该保存b属性。
任何想法如何做到这一点?
答案 0 :(得分:0)
所以,我找到了问题的根源!
在保存对象之前分配对象时,会发生此错误。如果您保存对象并在以后分配它,它将正确保存该对象:
using Emgu.CV.UI;
using System.Drawing;
using System.Diagnostics;