Использование метакласса в Джанго
-
23-09-2019 - |
Вопрос
Может кто-нибудь объяснить, почему в следующем примере используется метакласс.
Бывший:
Class Employee (models.Model):
name = models.ForeignKey(name)
Gender = models.IntegerField()
class Meta:
ordering = ["Gender"]
Спасибо.
Решение
Потому что автор/программист хочет отсортировать результаты по значению поля «Пол».
Другие советы
Модели Django используют Meta
class для хранения дополнительной информации о модели, которую не обязательно содержать в самом классе модели.Обратите внимание, что это нет то же, что Python metaclass
;это совсем другая тема.
В этом случае происходит упорядочивание или сортировка запросов к этой модели по полю «Пол».
В этом случае он определяет поле по умолчанию для заказа, если вы не предоставляете ORDER_BY
в вашем запросе.
Это объясняется в документации Django для моделей.
https://docs.djangoproject.com/en/dev/topics/db/models/
Предоставьте метаданные вашей модели, используя внутренний класс Meta, например:
Class Employee (models.Model):
....
class Meta:
ordering = ["attribute-X"]
Еще одна полезная опция, которую можно использовать в классе Meta, — это verbose_name.