如何从Django的模型中的方法中获取值我有两个模型Model1和Model2,Model2与Model1相关,方法位于Model2中,方法名称为get_organization_name
class Model1(models.Model):
code = models.CharField(max_length=5)
random_id = models.IntegerField(primary_key=True)
random_type = models.CharField(max_length=5)
random_code = models.CharField(max_length=10)
random_name = models.CharField(max_length=200)
class Model2(models.Model):
id = models.AutoField(primary_key=True)
claim_id = models.PositiveIntegerField()
random = models.OneToOneField('Model1', on_delete=models.DO_NOTHING,
db_column='random_id', related_name='polis_journal')
random_type = models.CharField(max_length=255)
organization_id = models.PositiveIntegerField()
def get_organization_name(self):
return polis_organizations.get(self.organization_id, None)
字符串
我试着遵循:
queryset = Model1.objects.all()
queryset = queryset.annotate(organization_name=F('polis_journal__get_organization_name')
型
1条答案
按热度按时间46scxncf1#
你不需要**,或者至少不需要使用“技巧”将方法“转换”为数据库表达式。
在这个特定的情况下,我们可能有一个字典查找,所以我们可以这样做:
字符串
但这不仅是丑陋的,而且这将导致一个大的表达式,它将在线性时间内执行字典查找。
通常,我们只在模型中存储组织的名称:
型
这样我们就可以使用:
型