如何按非字段值过滤 Django 查询集

Posted

技术标签:

【中文标题】如何按非字段值过滤 Django 查询集【英文标题】:How to filter Django queryset by non field values 【发布时间】:2018-10-28 11:44:02 【问题描述】:

我需要按当地时间查询模型。

send_reminder_query = PersonModel.objects.filter('Is after 7pm thier localtime')

此人将有一个邮政编码字段,我有一个通过他们的邮政编码获取时区的功能。我也愿意编写一个迁移脚本来填充 Person 模型上的时区,但我仍然不知道如何进行查询。

send_reminder_query = PersonModel.objects.filter(tzinfo='...', ?)

【问题讨论】:

显示您的PersonModel 模型。 你怎么知道他们的“当地时间”?您是否存储了有关它们的更多信息? 我只知道他们的邮政编码,但从中我可以知道他们的时区。 【参考方案1】:

我能够通过预处理数据来存储人的时区来解决这个问题。然后使用pytz 我这样做。

from django.utils import timezone 
import pytz


valid_timezones = []
for tz in list_of_timezones:
    local_time =  now().astimezone(pytz.timezone(tz))
    if 19 < local_time.hour < 20:
        valid_timezones.append(tz)

reminders = Person.objects.filter(timezone__in=valid_timezones)

【讨论】:

以上是关于如何按非字段值过滤 Django 查询集的主要内容,如果未能解决你的问题,请参考以下文章

构建请求 URL 以通过同一字段多次过滤 Django 查询集

如何使用 SQL 的“IN”等字段上的数组过滤 django 查询集?

如何使用 SQL 的“IN”等字段上的数组过滤 django 查询集?

Django - 按 CharField 值长度过滤查询集

如何在Django Admin中过滤foreignkey字段的查询集

Django 查询集过滤,将字段与字段进行比较