Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Правильная выборка из модели с prefetch_related. [RSS Feed]

#1 Апрель 3, 2013 06:21:04

MikaMika
Зарегистрирован: 2012-11-07
Сообщения: 51
Репутация: +  0  -
Профиль   Отправить e-mail  

Правильная выборка из модели с prefetch_related.

Привет.
Есть модели:

class A(models.Model):
    source = models.ForeignKey(B, related_name='source')
    target = models.ForeignKey(B, related_name='target')
    status = models.IntegerField(default=1)
class B(models.Model):
    name = models.CharField()
    compatibility = models.ManyToManyField(
        'self',
        symmetrical=False,
        through='A',
        blank=True,
        null=True
    )
class C(models.Model):
    myb = models.ForeignKey(B)
    name = models.CharField()

Делаю выборку из модели C:
    q = C.objects.filter(name='blahblah').\
        order_by('myb__name').\
        select_related('myb').\
        prefetch_related('myb__source', 'myb__target',  'myb__compatibility')

В шаблоне:
{% for q in myb.source.all %}
            {{ q.target.name|capfirst }} ({{ q.status }})<br/>
{% endfor %}
Меня терзают сомнения по поводу выборки в части с prefetch_related.
Может быть было достаточно:
#....
 prefetch_related('myb__source')
Раз связь идёт на саму модель.
Как правильно использовать prefetch_related (какие связи выбирать из модели), при связи модели саму на себя?

Отредактировано MikaMika (Апрель 3, 2013 06:23:21)

Офлайн

  • Начало
  • » Django
  • » Правильная выборка из модели с prefetch_related.[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version