Python 如何创建一个带有延迟字段的django模型实例而不影响数据库?

Python 如何创建一个带有延迟字段的django模型实例而不影响数据库?,python,django,Python,Django,假设我知道数据库中存在django模型行的一些字段,但没有将它们封装在模型实例中。对于我来说,有没有简单的方法可以将它们包装在一个模型实例中,而不进行额外的DB查询,并以一个填充了这些字段但所有其他字段都延迟的实例结束 假设我有一个模型: from django.db.models import CharField, IntegerField, Model class Person(Model): name = CharField(max_length=20) age = In

假设我知道数据库中存在django模型行的一些字段,但没有将它们封装在模型实例中。对于我来说,有没有简单的方法可以将它们包装在一个模型实例中,而不进行额外的DB查询,并以一个填充了这些字段但所有其他字段都延迟的实例结束

假设我有一个模型:

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.age
需要对数据库进行另一次查询才能获得alice的年龄

显然,我不能只做:

alice = Model(id=3, name='Alice')
因为这将设置年龄=10,因为这是字段的默认值,但这可能不是Alice的实际年龄

有什么想法吗?

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

alice = Model(id=3, name='Alice', age=django.db.models.DEFERRED)
请注意,这只适用于实例化,您不能在创建模型后分配DEFFERED

显然不能延迟主键。

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

alice = Model(id=3, name='Alice', age=django.db.models.DEFERRED)
请注意,这只适用于实例化,您不能在创建模型后分配DEFFERED


你显然不能推迟主键。

@brunodesshuilliers我真正的问题促使我提出这个问题,我用另一种方式解决了这个问题,但我有几个例子,其中一个工具可能很有用,所以我很好奇是否有解决方案。好的,很公平-谢谢你的澄清。@Brunodesshuilliers我的真实问题促使我提出这个问题,我用不同的方式解决了这个问题,但我有几个例子,其中一个工具可能有用,所以我很好奇是否有解决方案。好的,很公平-谢谢你的澄清。
alice = Model(id=3, name='Alice', age=django.db.models.DEFERRED)