Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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 指定where子句时,排序更改为降序_Django_Postgresql - Fatal编程技术网

Django 指定where子句时,排序更改为降序

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)],

我有一个Django 1.6.5应用程序,模型表示通过ForeignKey关联的图像,模型表示租赁类型。每种租赁类型有5个相关图像。图像模型继承自抽象模型

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级别的解决方案。干杯