在我的模型中,我有一个字段:
country = models.CharField(_('Country'), max_length=2, choices=COUNTRIES)
其中COUNTRIES是这样的元组元组:
COUNTRIES = (
('AF', _('Afghanistan')),
......等等
现在我想按国家/地区名称过滤该模型的实例。
此:
i = MyModel.objects.filter(country__iexact=query)
只允许我按国家/地区代码进行过滤。
如何按国家/地区名称进行过滤?
答案 0 :(得分:4)
您无法直接按国家/地区名称进行过滤(choices
仅在UI中使用,而不在数据库中使用。)
如果您将全名作为输入,请在COUNTRIES
元组中查找代码。例如:
# ... initialize a lookup dictionary
country_to_id_dict = dict((t[1], t[0]) for t in COUNTRIES)
# ... use the dictionary in the query
i = MyModel.objects.filter(country__exact=country_to_id_dict[query])