Вы должны включить в свою модель поля высоты и ширины, например:
class Photo(models.Model):
image = models.ImageField(height_field='image_height', width_field='image_width')
image_height = models.IntegerField()
image_width = models.IntegerField()
...
После переноса базы данных вы можете написать следующее:
Photo.objects.all().order_by('image_height')
Редактировать: если вам нужен доступ к ориентации, добавьте другое поле, например:
class Photo(models.Model):
...
aspect_ratio = models.FloatField(blank=True, null=True)
затем, переопределите ваш метод сохранения, чтобы заполнить это поле, используя высоту и ширину, т. Е .:
class Photo(models.Model):
...
def save(self, **kwargs):
self.aspect_ratio = float(self.image_height) / float(self.image_width)
super(Photo, self).save(kwargs)
Затем вы можете заказать по вашему новому полю, например:
Photo.objects.all().order_by('aspect_ratio')