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

Python Django模型根据人类可读的值进行过滤,python,django,django-models,django-managers,Python,Django,Django Models,Django Managers,是否可以按人类可读的值筛选模型 #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=No

是否可以按人类可读的值筛选模型

#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”进行过滤呢?

这是不可能的。国家名称不会存储在数据库中的任何位置。因此,您必须从显示名称中获取国家/地区值并按其过滤:

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