在指定where子句时将更改排序为降序

时间:2014-07-13 17:32:12

标签: django postgresql

我有一个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;

图像从最高ID返回到最低ID。但是,当我尝试:

select * from longletimage;

按正常顺序(从ID最低的行到最高的行)正确返回图像 - 正如预期的那样。

这仅适用于7个模型中的一个,仅在生产数据库中。在我的开发和登台数据库(托管在不同的主机上)中,图像以默认排序顺序(升序)返回。

数据库是PostgreSQL 9.3。

为什么在指定where子句时顺序不同,如何更改它?为什么只有一个模型才会发生这种情况呢?

编辑:

Per Daniel的评论我必须在模型上指定默认顺序。这可以使用Meta类按照Django docs

来完成
class Meta:
    ordering = ['id']

0 个答案:

没有答案