prefetch_related('имя менеджера')
select_related('имя fk поля')
class SomeModel(Model):
items = ManyToManyField(Item)
# закэширует все Item каждого SomeModel двумя запросами
SomeModel.objects.all().prefetch_related('items')
# или
class SomeModel(Model):
pass
class Item(Model):
some_model = ForeignKey(SomeModel, related_name='itemz') # Обрати внимание на related_name
qs = SomeModel.objects.all().prefetch_related('itemz') # Опять 2 запроса
qs[0].itemz.all() # Не создаст запрос в БД
# Если же ты хочешь одним запросом получить
# SomeModel'ы Item'ов, то:
qs = Item.objects.filter(...).select_related('some_model')
qs[0].some_model # Не создаст запрос в БД
0b1 # Читать
0b10 # Писать
0b100 # Редактировать
0b1000 # Удалять
0b1010 # юзер может писать и удалять, но не может читать и редактировать
обновлем его каждый раз при добавлении в код новой зависимости
И классы с юнит тестами хранить в том же модуле где и код или отдельно и потом туда их импортировать и запускать через if __name__ ....?
"""
Описание, что делает метод/функция
:param param1: Что за параметр принимается
:param param2: Ещё один параметр, который принимается
:returns: Какое значение возвращается
:raises KeyError: В каком случае рейзится эта ошибка
"""