是否可以按人类可读的值过滤模型?
#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'?
答案 0 :(得分:2)
这是不可能的。国家/地区名称不会存储在DB中的任何位置。因此,您必须从显示名称中获取国家/地区值并按其过滤:
countries = dict((v, k) for k, v in World.COUNTRY_CHOICES)
provinces = self.filter(country=countries['Spain'])