Django 指定where子句时,排序更改为降序
我有一个Django 1.6.5应用程序,模型表示通过ForeignKey关联的图像,模型表示租赁类型。每种租赁类型有5个相关图像。图像模型继承自抽象模型Django 指定where子句时,排序更改为降序,django,postgresql,Django,Postgresql,我有一个Django 1.6.5应用程序,模型表示通过ForeignKey关联的图像,模型表示租赁类型。每种租赁类型有5个相关图像。图像模型继承自抽象模型 class PropertyImage(models.Model): image = ProcessedImageField(upload_to=get_upload_path, processors=[ResizeToFit(609, 456)],
class PropertyImage(models.Model):
image = ProcessedImageField(upload_to=get_upload_path,
processors=[ResizeToFit(609, 456)],
format='JPEG',
options={'quality': 60},
verbose_name = _("Image"))
class Meta:
abstract = True
class LongLetImage(PrpertyImage):
property = models.ForeignKey(LongLet, related_name='images')
因此,当通过相关字段(即longlet1.images.all())访问时,我无法理解其中一个相关的映像模型是按降序返回的。这在数据库层发生,正如我尝试:
select * from longletimage where property_id=X;
select * from longletimage;
图像从最高ID返回到最低ID。然而,当我尝试:
select * from longletimage where property_id=X;
select * from longletimage;
图像按升序(从ID最低的行到ID最高的行)正确返回,如预期的那样
这种情况仅发生在7款车型中的一款车型上,并且仅发生在生产数据库中。在my dev和staging数据库(托管在不同的主机上)中,映像以默认排序顺序(升序)返回
数据库是PostgreSQL 9.3
指定where子句时,为什么顺序不同?如何更改?如果所有模型都相同,为什么只有一个模型会发生这种情况
编辑:
根据Daniel的评论,我必须在模型上指定默认顺序。这可以按照Django使用元类来完成
如果没有
orderby
子句,则前提是错误的。没有它,就不会有特别的订单。根据手册:如果没有给出ORDERBY,则将以系统认为最快的生产顺序返回行。就这样。我不能接受这个评论作为答案。如果你想让我接受,我想你可以删除评论并添加答案。我已经编辑了我的问题,以包括Django级别的解决方案。干杯