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

假设我知道数据库中存在一行 django 模型的一些字段,但没有将它们封装在模型实例中。有没有什么简单的方法可以让我将它们包装在模型实例中,而无需进行额外的数据库查询,并以填充了这些字段但所有其他字段都被推迟的实例结束?


所以说我有模型:


from django.db.models import CharField, IntegerField, Model


class 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因为这是场上的默认值,但这可能不是爱丽丝的实际年龄。


有任何想法吗?


HUWWW
浏览 160回答 1
1回答

神不在的星期二

分配django.db.models.DEFERRED给您要延迟的字段,即:alice&nbsp;=&nbsp;Model(id=3,&nbsp;name='Alice',&nbsp;age=django.db.models.DEFERRED)请注意,这仅适用于实例化,DEFFERED创建模型后无法分配。你显然不能推迟主键。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python