gpt4 book ai didi

python - 如何创建相关字段?

转载 作者:太空宇宙 更新时间:2023-11-04 00:16:23 24 4
gpt4 key购买 nike

我有一个模型,您在下面看到:

class PriceModel(models.Model):
name = models.CharField(max_length=12)

PriceModel 的 id 从 1 增加。我想添加与 id 相关的其他字段。比如我要#PM1,#PM2...就是#PM + id.

如何创建关联字段?

最佳答案

I want to add other field, which is related to the id. Such as I want it to #PM1, #PM2... means the #PM + id.

首先,保证对于所有数据库系统,id总是加一。例如,如果数据库使用事务或其他机制,则事务可能会回滚,因此永远不会采用相应的 id

如果您想要一些始终取决于字段值的“字段”(此处为 id),那么我认为 @property 可能是一个更好的主意:

class PriceModel(models.Model):
name = models.CharField(max_length=12)

<b>@property
def other_field(self):
return '#PM{}'.format(self.id)</b>

现在如果我们有一些 PriceModel,那么 some_pricemodel.other_field 将返回给定的 '#PM123' (id123)。好处是,如果 id 发生变化,那么属性也会发生变化,因为它每次都是根据字段计算的。

一个潜在的问题是我们不能使用这个属性进行查询,因为数据库不知道这样的属性存在。然而,我们可以定义一个注解:

from django.db.models import Value
from django.db.models.functions import Concat

PriceModel.objects.<b>annotate(
other_field=Concat(Value('#PM'), 'id')
)</b>.filter(
other_field__icontains='pm1'
)

关于python - 如何创建相关字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50798848/

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