from django.db import connection
print(connection.queries)
чтобы иметь рабочий сайт и не парится, что в нём есть дыры
через какое-то время добавить в него постджр БД или JSON.
общим названиям
letters = 'абвгд'
Model.objects.filter(reduce(
lambda x,y: (isinstance(x, Q) and x or Q(name__istartswith=x)) | Q(name__istartswith=y),
letters
))
# Или
from operator import or_
Model.objects.filter(
reduce(or_, (Q(name__istartswith=l) for l in letters))
)
class Meta:
managed = False
def save(self, *args, **kwargs):
raise ValueError('Read-only database')
def delete(self, *args, **kwargs):
raise ValueError('Read-only database')
class CardserverQuerySet(models.QuerySet):
def create(self, *args, **kwargs):
raise ValueError('Read-only database')
def update(self, *args, **kwargs):
raise ValueError('Read-only database')
def delete(self, *args, **kwargs):
raise ValueError('Read-only database')
def bulk_create(self, *args, **kwargs):
raise ValueError('Read-only database')
def get_or_create(self, *args, **kwargs):
raise ValueError('Read-only database')
def update_or_create(self, *args, **kwargs):
raise ValueError('Read-only database')
class CardserverManager(models.Manager):
def get_queryset(self):
return CardserverQuerySet(self.model, using='remote')
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 # Не создаст запрос в БД
"""
Описание, что делает метод/функция
:param param1: Что за параметр принимается
:param param2: Ещё один параметр, который принимается
:returns: Какое значение возвращается
:raises KeyError: В каком случае рейзится эта ошибка
"""