2

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

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

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

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

... 等等

现在我想按国家名称过滤该模型的一个实例。

这:

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

只允许我按国家代码过滤。

如何按国家名称过滤?

4

1 回答 1

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])
于 2009-11-17T00:58:31.667 回答