如何过滤元组元组中的第二个元素?

时间:2009-11-17 00:49:18

标签: python django filter country

在我的模型中,我有一个字段:

   country = models.CharField(_('Country'), max_length=2, choices=COUNTRIES)

其中COUNTRIES是这样的元组元组:

COUNTRIES = (
    ('AF', _('Afghanistan')),

......等等

现在我想按国家/地区名称过滤该模型的实例。

此:

   i = MyModel.objects.filter(country__iexact=query)

只允许我按国家/地区代码进行过滤。

如何按国家/地区名称进行过滤?

1 个答案:

答案 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])