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

发布于 2024-08-11 05:06:21 字数 410 浏览 9 评论 0原文

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

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

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

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

... 等等

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

这:

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

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

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

In my model I have a field:

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

Where COUNTRIES is a tuple of tuples like this:

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

... and so on

Now I want to filter an instance of that model, by the country name.

This:

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

only lets me filter by the country code.

How can I filter by country name?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

来日方长 2024-08-18 05:06:21

您无法直接按国家/地区名称进行过滤(选项仅在 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])

You cannot filter directly by the country name (the choices are only used in the UI, not in the database).

If you get the full name as an input, lookup the code in the COUNTRIES tuple-of-tuples. For example:

# ... 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])
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文