Django连接字符域并将其解析为Datetime
你好吗 我有一个模型,它有两个字段名为Django连接字符域并将其解析为Datetime,django,django-models,django-rest-framework,django-orm,django-annotate,Django,Django Models,Django Rest Framework,Django Orm,Django Annotate,你好吗 我有一个模型,它有两个字段名为start\u time和end\u time,都是CharField,这个模型与另一个模型有关系,这个模型有一个字段名为date,它是一个DateField。看起来像这样 class A(models.Model): date = models.DateField() class B(models.Model): relation = models.ForeignKey(A) start_time = models.CharFie
start\u time
和end\u time
,都是CharField,这个模型与另一个模型有关系,这个模型有一个字段名为date
,它是一个DateField。看起来像这样
class A(models.Model):
date = models.DateField()
class B(models.Model):
relation = models.ForeignKey(A)
start_time = models.CharField()
end_time = models.CharField()
我需要使用datetime值查询模型B,例如:
B.models.filter(reconstructed_datetime="2021-04-19 15:02:00")
其中,重建的日期时间
是日期
(来自模型A)与开始时间
或结束时间
(来自模型B)连接在一起的
我试过这样的方法:
B.objects.annotate(
reconstructed_start=Concat(
F('relation__date'), Value(' '), F('start_date'),
output_field=CharField()
)
).annotate(
reconstructed_start_datetime=Cast("reconstructed_start", DateTimeField()),
)
但后来我试着过滤
.filter(reconstructed_start_datetime="2021-04-19 15:02:00")
它不会返回我的数据库记录
这里的“hora_inicio”是开始时间
。我想使用Cast
不起作用
因此,您知道一种连接这些模型值,然后作为datetime字段进行查询的方法吗?您可以提供如何存储
开始时间和结束时间的示例吗?它们是ISO 8601的次数吗?时间戳?您好,是HH:MM:SS格式的,类似于上一张图片中显示的“hora_inicio”。我认为问题在于时区。让我检查一下,这是要将您的数据存储为UTC。如果启用时区支持,则默认情况下,您的日期对象将存储为UTC。但在此处使用批注有多重要?通过将输入的datetime拆分为日期和时间组件,可以构造一个相当简单的查询。我可以发布一个示例,但它不会回答您关于连接的特定问题