Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django Concat查询错误您可能需要添加显式类型转换_Django_Django Rest Framework_Django Orm_Django Postgresql - Fatal编程技术网

Django Concat查询错误您可能需要添加显式类型转换

Django Concat查询错误您可能需要添加显式类型转换,django,django-rest-framework,django-orm,django-postgresql,Django,Django Rest Framework,Django Orm,Django Postgresql,我正在尝试使用注释生成的日期字段进行查询/筛选 这是我的疑问: trip = Booking.objects.annotate( end_date=Concat( Extract('start_date', 'year'), Value('-'), Extract('start_date', 'month'), Value('-'), Extract('start_date', 'day') + F('iti

我正在尝试使用注释生成的日期字段进行查询/筛选

这是我的疑问:

trip = Booking.objects.annotate(
    end_date=Concat(
        Extract('start_date', 'year'),
        Value('-'),
        Extract('start_date', 'month'),
        Value('-'),
        Extract('start_date', 'day') + F('itinerary__days')
        , output_field=DateField()
    )
)

expired = booking.filter(end_date__gte=datetime.today())
但给了我以下错误:

HINT:  No operator matches the given name and argument type(s). You might need to add explicit type casts.
我对此进行了研究,错误与PostgreSQL有关

我不知道如何解决这个问题

这些是我的模型:

class Itinerary(models.Model):
    days = models.PositiveSmallIntegerField(_("Days"), null=True, blank=True)


class Booking(models.Model):
    itinerary = models.ForeignKey(
        Itinerary,
        on_delete=models.CASCADE
    )
    start_date = models.DateField(_("Start Date"), null=True, blank=True)

    def get_end_date(self):
        return self.start_date + datetime.timedelta(days=self.itinerary.days)
我不知道如何解决这个问题

我没有名为
end\u date
的字段,但我正在使用增加行程表天数的注释来创建end\u date


有人能告诉我查询不起作用的可能原因吗?

表达式中存在逻辑错误。假设
start_date
是2020-10-29,而
internative.days
的对应值是
7
,在这种情况下,SQL“可能”将整数相加(29+7=36),但它永远不会生成有效日期在这种情况下可能的解决方案是什么?