Привет.
Есть модели:
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 (какие связи выбирать из модели), при связи модели саму на себя?