Форум сайта python.su
Привет.
У меня вопрос по поводу оптимизации, ORM и шаблонов Django.
К примеру есть модель:
class MyModel(models.Model): name = models.CharField() to_model1 = models.ForeignKey(Model1) to_model2 = models.ManyToManyField(Model2)
def myview(request): q = MyModel.objects.filter(to_model1__name='blahblah') render(request, 'blahblah.html', {'q': q})
{% for result in q %} {{ result.to_model1 }} {% endfor %}
q = MyModel.objects.prefetch_related().filter(to_model1__name='blahblah')
{{ result.to_model1 }}
q = MyModel.objects.prefetch_related().filter(to_model1__name='blahblah')
q = MyModel.objects.filter(to_model1__name='blahblah').prefetch_related()
to_model2 = models.ManyToManyField(Model2)
Отредактировано MikaMika (Март 18, 2013 12:43:29)
Офлайн
Как работает prefetch_related() можно посмотреть в исходном коде Django
> Насколько я понимаю, что если я изменю запрос во вьюхе на:
> то никакой выгоды в количестве запросов к базе я не получу?
Тут не надо ничего понимать, тут надо просто смотреть количество запросов, например с помощью django-debug-toolbar
Офлайн