如何在元组的元组中按第二个元素过滤?
在我的模型里,有一个字段:
country = models.CharField(_('Country'), max_length=2, choices=COUNTRIES)
这里的 COUNTRIES 是一个包含多个元组的元组,像这样:
COUNTRIES = (
('AF', _('Afghanistan')),
... 还有其他类似的内容
现在我想根据国家名称来筛选这个模型的实例。
这样做:
i = MyModel.objects.filter(country__iexact=query)
只能让我通过国家代码来筛选。
我该如何通过国家名称来筛选呢?
1 个回答
4
你不能直接通过国家名称来筛选(choices
只是用在界面上,并不在数据库中使用)。
如果你得到的是完整的国家名称作为输入,可以在 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])