首页 > 解决方案 > 在 ExpressionWrapper 中结合 Django DateField 和 TimeField 给出 TypeError: expected string or bytes-like object

问题描述

我有一个请求模型,它有一个插槽的外键

我的 Slot 模型如下所示:-

class Slot(models.Model):
    day = models.DateField()
    start_time = models.TimeField()
    end_time = models.TimeField()

在我看来,我试图注释 day 和 start_time 字段以将它们与当前时间进行比较,

from django.db.models import DateTimeField, DateField, TimeField, ExpressionWrapper, F

    pending_requests = Request.objects.annotate(
        my_dt=ExpressionWrapper(
            F('slot__day') + F('slot__start_time'),
            output_field=DateTimeField()
        )
    )[0]

这给了我: TypeError: expected string or bytes-like object

当我将每个字段注释到其各自的字段类型时,它工作正常,

        pending_requests = Request.objects.annotate(
        my_dt=ExpressionWrapper(
            F('slot__day'),
            output_field=DateField()
        )
    )[0]

不确定我是否正确组合了这些字段或如何解决这个问题

标签: pythondjangodjango-modelsdjango-annotate

解决方案


推荐阅读