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),但它永远不会生成有效日期在这种情况下可能的解决方案是什么?