我对django有意见。在我的模型中,我有一个json字段,它默认存储一个空列表。当尝试将值附加到该列表时,这不起作用。不管它是另一个对象还是字符串。去田野的时候,它还是空的。我将感谢任何帮助。提前谢谢。
models.py
followers = models.JSONField(default={
"followers": []
})
(followers字段位于client类中)
views.py
current_user = Client.objects.get(id=response.user.id)
current_user.followers["followers"].append("Some Name")
1条答案
按热度按时间kyxcudwk1#
这里有两个问题。首先,需要将对象保存到数据库中。进一步的MOR3E使用
{"followers": []}
因为默认不是一个好主意。正如jsonfield上的文档所述:如果为该字段提供默认值,请确保它是可调用的,例如
dict
(对于空默认值)或返回dict的可调用项(如函数)。错误使用default={}
创建一个可变的默认值,该默认值在jsonfield的所有示例之间共享。因此,您应该定义一个创建(新)字典的函数,如:
如果您想要实现一个followee模型,您不应该使用jsonfield,而应该使用
ManyToManyField
,因为关系数据库经过优化,可以处理这样的表,它将保证引用完整性。