为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不访问数据库的情况下创建具有延迟字段的 django 模型实例?

如何在不访问数据库的情况下创建具有延迟字段的 django 模型实例?

HUWWW 2021-10-12 15:24:48
假设我知道数据库中存在一行 django 模型的一些字段,但没有将它们封装在模型实例中。有没有什么简单的方法可以让我将它们包装在模型实例中,而无需进行额外的数据库查询,并以填充了这些字段但所有其他字段都被推迟的实例结束?所以说我有模型:from django.db.models import CharField, IntegerField, Modelclass Person(Model):    name = CharField(max_length=20)    age = IntegerField(default=10)我有一本字典:raw_person = {'id': 3, 'name': 'Alice'}我想以没有另一个数据库查询的模型实例结束:alice = Model(id=3, name='Alice', age=<deferred>)这样做:alice.name是即时的,但是alice.age将需要对数据库进行另一次查询以获取alice.显然(?)我不能只做:alice = Model(id=3, name='Alice')因为那会被设置,age = 10因为这是场上的默认值,但这可能不是爱丽丝的实际年龄。有任何想法吗?
查看完整描述

1 回答

?
神不在的星期二

TA贡献1963条经验 获得超6个赞

分配django.db.models.DEFERRED给您要延迟的字段,即:

alice = Model(id=3, name='Alice', age=django.db.models.DEFERRED)

请注意,这仅适用于实例化,DEFFERED创建模型后无法分配。

你显然不能推迟主键。


查看完整回答
反对 回复 2021-10-12
  • 1 回答
  • 0 关注
  • 159 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号