我的django应用中有两个相关的模型(一对多),当我做这样的事情时

ObjBlog = Blog()
objBlog.name = 'test blog'

objEntry1 = Entry()
objEntry1.title = 'Entry one'

objEntry2 = Entry()
objEntry2.title = 'Entry Two'

objBlog.entry_set.add(objEntry1)
objBlog.entry_set.add(objEntry2)


我收到一个错误,提示“列中为空值,它违反了外键而不是空约束”。

我的模型对象均未保存。在设置条目之前是否必须保存“ objBlog”?我希望可以在objBlog上调用save方法来保存所有内容。

注意:我不是在创建博客引擎,这只是一个示例。

最佳答案

我猜想您的模型之一有一个不能为空的外键字段。
当您执行objBlog.entry_set.add(objEntry1)时,django在每个对象上调用save()。

add方法如下所示:

def add(self, *objs):
    for obj in objs:
        if not isinstance(obj, self.model):
            raise TypeError("'%s' instance expected" % self.model._meta.object_name)
        setattr(obj, rel_field.name, instance)
        obj.save()
add.alters_data = True

关于django - 保存相关模型对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2798615/

10-15 23:14