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拆分为日期和时间组件,可以构造一个相当简单的查询。我可以发布一个示例,但它不会回答您关于连接的特定问题