繁体   English   中英

Django模型按人类可读的值过滤

[英]Django models filter by the human-readable value

是否可以通过人类可读的值过滤模型?

#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'])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM