Python django.db.utils.ProgrammingError:运算符不存在:字符变化日期
我在Django项目中从PostGre数据库查询 下面是我的代码Python django.db.utils.ProgrammingError:运算符不存在:字符变化日期,python,django,postgresql,sqlite,django-models,Python,Django,Postgresql,Sqlite,Django Models,我在Django项目中从PostGre数据库查询 下面是我的代码 flight_schedule_detail_instance = FlightScheduleDetail.objects.filter schedule_id=FlightSchedule.objects.filter(schedule_id=instance.schedule_id), flight_date=str(tomorrow_date) )
flight_schedule_detail_instance = FlightScheduleDetail.objects.filter
schedule_id=FlightSchedule.objects.filter(schedule_id=instance.schedule_id),
flight_date=str(tomorrow_date)
)
我需要筛选所有具有特定计划id
和航班日期的实例。这在我的本地主机中工作。我在本地主机代码中使用sqlite。服务器使用PostGre db。如何查询以获得所需的结果
另外,myFlightScheduleDetail
模型中的flight\u日期是一个日期字段。我的schedule\u id
是另一个模型的外键,它是该模型中的CharField
我还尝试在没有str
包装器的情况下将tomorrow\u date
变量作为date
对象
Mymodels.py
:
class FlightScheduleDetail(models.Model):
flight_date = models.DateField(max_length=30, null=False, blank=False)
schedule_id = models.ForeignKey(FlightSchedule, null=False, related_name="schedule_details", blank=False)
route_id = models.CharField(max_length=150, null=False, blank=False, unique=True)
flight_status = models.ForeignKey(Status, null=True, default=1)
def __unicode__(self):
return u'%s' % self.route_id
class Meta:
verbose_name_plural = "flights Schedule Details"
class FlightSchedule(models.Model):
tail_number = models.ForeignKey(TailNumber, null=False, blank=False)
schedule_id = models.CharField(max_length=40, null=False, blank=False, unique=True)
flight_group_code = models.ForeignKey(FlightGroup, null=False, blank=False)
minLength = MinLengthValidator(limit_value=7)
binary = RegexValidator(r'^[0-1]*$', 'Only 0s and 1s are allowed.')
scheduled_days = models.CharField(max_length=7, validators=[binary, minLength], null=True, blank=True,
default="1111111")
origin_port_code = models.ForeignKey(Port, null=False, related_name="Origin", blank=False)
destination_port_code = models.ForeignKey(Port, null=False, related_name="Destination", blank=False)
flight_departure_time = models.TimeField()
start_date = models.DateField()
end_date = models.DateField()
def __unicode__(self):
return u'%s' % self.schedule_id
class Meta:
verbose_name_plural = "flights Schedule"
我正在计算明天的日期,如下所示:
tomorrow_date = datetime.date.today() + datetime.timedelta(days=1)
这是一个典型的例子,说明了为什么在开发和生产中应该使用相同的数据库。Sqlite没有类型的概念。您可以声明字段类型,但没有严格遵循它们。因此,您可以轻松地将文本数据插入日期字段。另一方面,Postgresql对类型要求非常严格
根据问题的更新更新我的答案
我不太确定,你是否需要详细的询问。您有一个FlightSchedule
实例,该实例将允许您直接访问所有相关的flightscheduledetail
实例。你可以像这样过滤它
instance.flightscheduledetail_set.filter(flight_date=tommorow_date)
如果您仍然有错误,这只能意味着某个地方有一个missig迁移。正如我在问题中提到的,我在查询中尝试了str
强制转换。我的flight\u date
也是一个DateField
。正如我在回答中提到的,sqlite允许您将任何内容放入一个字段中。你应该发布你的完整模型。并显示tommorow_日期的外观。请添加航班时刻表模型。也添加了航班时刻表