
Django — один из самых популярных фреймворков Python для создания бэкэндов для веб-приложений. Django работает по принципу шаблона представления модели, любая сущность в Django представлена моделью, которая обычно определяется в файле models.py в любом каталоге приложения.
Давайте посмотрим на некоторые полезные мета-параметры модели, предоставленные нам Django:
заказ №1
Как следует из названия, ordering в мета-параметрах указывает порядок, в котором набор запросов будет заполняться всякий раз, когда Model.objects() вызывается в модели. ordering должен быть кортежем, в который поля модели вставляются в виде строк. `-` перед полем делает его в порядке убывания.`
#models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('-published',)
Экземпляры обычно возвращаются диспетчером моделей в том порядке, в котором они были вставлены. У нас есть возможность заказа для изменения этого. Экземпляры Post в приведенном выше коде будут отсортированы от последней вставленной модели к первой.
Оболочка Django перед установкой порядка:
>>> from main.models import Post >>> qs = Post.objects.all() >>> qs <QuerySet [<Post: Post object (1)>, <Post: Post object (2)>, <Post: Post object (3)>]>
Оболочка Django после настройки порядка:
>>> from main.models import Post >>> qs = Post.objects.all() >>> qs <QuerySet [<Post: Post object (3)>, <Post: Post object (2)>, <Post: Post object (1)>]>
#2 уникальный_вместе
Параметр unique_together в Django указывает модели разрешить только один экземпляр определенной комбинации значений для заданных полей. Если экземпляр с такими же значениями уже создан, Django выдает ошибку.
Параметры unique_together принимают список списков с именами полей в качестве элементов.

На изображении выше вы можете видеть, что нет ограничений на создание более одного поста с одинаковым заголовком и содержанием.
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = [['title', 'content'],
Когда вы пытаетесь создать публикацию с тем же заголовком и содержанием, которые уже присутствуют после добавления уникальной опции «вместе», возникнет ошибка.

# 3 get_latest_by
Опция get_latest_by в Django указывает модели вернуть последний объект по указанному полю модели. Это используется, когда latest() вызывается из диспетчера моделей. get_latest_by принимает имя поля, которое обычно является DateTimeField или DateField.
#models.py
from django.db import models
class Post(models.Model):
title = models.CharField(max_length=200)
content = models.TextField()
published = models.DateTimeField(auto_now_add=True)
class Meta:
ordering = ('-published',)
get_latest_by = 'published'
Django Shell после установки get_latest_by :
>>> from main.models import Post >>> Post.objects.all().latest() <Post: Post object (3)> >>> Post.objects.all().last() <Post: Post object (1)>
Посмотрите, как порядок и get_latest_by отличаются друг от друга, порядок влияет на набор запросов, но get_latest_by работает только для latest() функции Модели.
Я искренне надеюсь, что вам понравилось читать эту статью. Django предлагает множество других полезных функций, подобных этим, которые я собираюсь обсудить в своих следующих блогах. Подумайте о том, чтобы стать последователем, если это звучит так, как будто вам это интересно.