Использование мета-класса в Django - PullRequest
7 голосов
/ 27 января 2010

Может кто-нибудь объяснить, почему мета класс используется в следующем примере.

Ex:

Class Employee (models.Model):
    name = models.ForeignKey(name)
    Gender = models.IntegerField()


    class Meta:
        ordering = ["Gender"]

Спасибо.

Ответы [ 4 ]

25 голосов
/ 27 января 2010

Модели Django используют класс Meta, чтобы содержать дополнительную информацию о модели, которую необязательно было бы содержать внутри самого класса модели. Обратите внимание, что это , а не так же, как в Python metaclass; это совершенно другая тема.

В данном случае это упорядочивание или сортировка запросов к этой модели по полю «Пол»

3 голосов
/ 27 января 2010

В этом случае он определяет поле по умолчанию для заказа, если вы не указали ORDER_BY в запросе.

3 голосов
/ 27 января 2010

Поскольку автор / программист хочет отсортировать результаты по значению поля Gender.

0 голосов
/ 07 марта 2013

Это объясняется в документации Django для моделей

https://docs.djangoproject.com/en/dev/topics/db/models/

Передайте метаданные модели, используя внутренний класс Meta, например:

Class Employee (models.Model):
    ....

    class Meta:
        ordering = ["attribute-X"]

Еще один полезный параметр можно использовать в классе Meta - verbose_name.

...