Django模型根据人类可读的值进行过滤

2024-06-12 09:16:59 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以根据人类可读值过滤模型?在

#models.py
class World(models.Model):
    COUNTRY_CHOICES = (('SP', 'Spain'), ('FR', 'France'))
    country=models.CharField(max_length=20, choices=COUNTRY_CHOICES, default=None)
    province=models.CharField(max_length=20, default=None)

#managers.py
def get_provinces(self):
    provinces = self.filter(country='SP')
    return provinces

这将返回其国家是西班牙的省份,但是我如何才能使用“西班牙”而不是“SP”进行过滤呢?在


Tags: pyselfnonedefaultmodels人类countrylength
1条回答
网友
1楼 · 发布于 2024-06-12 09:16:59

这是不可能的。国家/地区名称不存储在数据库中。因此,您必须从显示名称中获取国家/地区值并按其进行筛选:

countries = dict((v, k) for k, v in World.COUNTRY_CHOICES)
provinces = self.filter(country=countries['Spain'])

相关问题 更多 >