如何使用其他值 django 模型覆盖默认值

莫里茨_1201

我有 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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django模型的默认值

Django模型中字段的默认值

Django 模型字段默认值=无用?

使用模型方法作为Django模型的默认值?

Django模型:相对于其他字段设置默认值

如何在Django的子模型字段中使用抽象模型字段值作为默认值?

模型中的Django 3动态默认值

Django将默认值保存在代理模型中

为 Django 模型 FloatField 设置最大默认值

UUID作为Django模型中的默认值

Postgres序列作为Django模型字段的默认值

Django-将登录用户的用户名作为其他模型的默认值

如何处理Django模型中没有默认值的必需值

Django OneToOneField默认值

Django表单的默认值

Django:durationField默认值

Django:使用模型方法分配默认值(使用自我)

如何在Django中为扩展模型设置默认值?

Django admin - 如何添加 request.user 作为内联模型的默认值?

如何将Django模型日期字段的默认值设置为将来的日期?

django模型具有唯一随机默认值的迁移问题

Django模型的默认值未出现在SQL中

Django:根据外键的存在为模型实例创建可编辑的默认值

未设置django的模型字段选项``blank''和``null''的默认值是什么?

返回十六进制UUID作为Django模型charfield的默认值

将用户 first_name 保存为模型 django 的默认值

Django - 这是否可能在创建模型时添加默认值?

有没有办法在django模型的CharField中设置默认值?

在 Django 模型中将当前时间和日期设置为默认值