![](/img/trans.png)
[英]Django: Group By between two range of Dates that are not present in Database
[英]Getting a query set between a range of dates Django
我正在尝试使用查询集返回 2 个不同日期、过去日期和当前时间之间的项目列表。
我得到的错误是TypeError: an integer is required (got type str)
视图.py
import datetime
import pytz
first_date = "2020-01-01 19:17:35.909424"
last_date = timezone.now()
我不希望返回任何有未来日期的东西
这是查询中的过滤器
.filter(hide_sentance_until=(date(first_date), date(last_date)))
这是完整的查询集,但正是上述过滤器导致了他的问题
zip_flash_sentances = (
model.objects
.filter(show_sentance=True)
.filter(
hide_sentance_until=(date(first_date), date(last_date))
)
.order_by("?")
.filter(username_id = user_id_fk)
.values_list('sentance_eng', 'sentance_esp', 'id')
.first()
)
我认为这可能是日期的比较问题,但这是我的模型字段
模型.py
hide_sentance_until = models.DateTimeField(default=datetime.now(), blank=True)
谢谢
您可以使用gte
和lte
查询属性:
first_datetime = datetime.datetime.strptime(first_date, '%Y-%m-%d %H:%M:%S.%f')
last_date = timezone.now()
.filter(hide_sentance_until__lte=last_date,hide_sentance_until__gte=first_time)
一件事是您指定了一个特定值,该值是在您的代码编译为默认值时确定的。 要使实际当前日期成为您想要的值:
hide_sentance_until = models.DateTimeField(default=datetime.now, blank=True)
然后你需要从字符串中解析出日期时间。
date_value = datetime.strptime(first_date, DATETIME_FORMAT_YOU_USE)
其中 DATETIME_FORMAT_YOU_USE 是您正在使用的Python 格式代码系列。
最后,您应该使用__range
查询__range
字段查找。
.filter(
hide_sentance_until__range=(date_value, timezone.now())
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.