gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 22:00:51 24 4
gpt4 key购买 nike

假设我知道数据库中存在 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,因为这是字段中的默认值,但这可能不是 Alice 的实际年龄。

有什么想法吗?

最佳答案

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

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

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

你显然不能推迟主键。

关于python - 如何在不访问数据库的情况下创建带有延迟字段的 django 模型实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54215988/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com