2013-05-01 50 views
0

我有以下Model外键总是被设置为空数据库

class Message(models.Model): 
    parent = models.ForeignKey('self', related_name='parent_msg', null=True) 
    (...) 

而且我下面创建一个新的消息:

(...) 
parent_msg = Message.objects.get(id = message_id) 
m = Message(..., parent = parent_msg) 
m.save() 

parent_id场总是被在数据库上设置为NULL

该文档显示“如果为True,Django将在数据库中将空值存储为NULL”,但我知道parent_msg不是空的,所以我做错了什么?

+0

尝试向'ForeignKey'参数添加'blank = True'。以防万一,你确定所有的模式迁移都被触发了吗?另外,你确定你在初始化之后不忘记保存对象吗?您也可以尝试将父项设置为属性(不在构造函数中: 'm.parent = parent_msg; m.save()' – 2013-05-01 21:49:52

+0

我已经尝试添加'blank = True,default = None',并且运行'syncdb',我也做'm.save()'。仍然没有成功 – AntonioJunior 2013-05-01 22:53:55

回答

0

问题不在于模型定义。但带有插入代码。 你可以请发布完整的代码,以便它可以验证。你使用的是什么版本的Django。

+0

问题在于代码的不同部分,当我按照你的建议保存'parent_msg'时,它会起作用。你可以回滚你的最后一次编辑,让人们知道正确的方法吗? – AntonioJunior 2013-05-02 00:35:48

+0

如果错误出现在代码的其他部分,那么问题中的代码将毫无问题地工作。提供的是不需要的。 – 2013-05-02 00:37:46