我有 Django 的问题。在我的模型中,我有一个 JSON-Field,它默认存储一个空列表。尝试将值附加到该列表时,这不起作用。无论是另一个对象还是字符串。去田野,那时还是空的。我将不胜感激任何帮助。提前致谢。
模型.py
followers = models.JSONField(default={
"followers": []
})
(“追随者”字段在 Client 类中)
视图.py
current_user = Client.objects.get(id=response.user.id)
current_user.followers["followers"].append("Some Name")
这里有两个问题。首先,您需要将对象保存到数据库中。此外{"followers": []}
,默认使用3e不是一个好主意。正如JSONField 上的文档所说:
如果您为该字段提供默认值,请确保它是可调用的,例如
dict
(对于空默认值)或返回字典的可调用对象(例如函数)。不正确地使用default={}
会创建一个在 JSONField 的所有实例之间共享的可变默认值。
因此,您应该定义一个将创建(新)字典的函数,例如:
def default_followers():
return {'followers': []}
class MyModel(models.Model):
# …
followers = models.JSONField(default=default_followers)
如果要实现跟随者-跟随者模型,则不应使用 JSONField,而应使用ManyToManyField
,因为关系数据库已针对此类表进行了优化,并且可以保证参照完整性。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句