Получите «_set» для отношений «многие ко многим» со сквозным - PullRequest
0 голосов
/ 08 января 2019

У меня есть такая модель пользователя:

class Person(AbstractUser):
    id = models.AutoField(primary_key=True)
    ...(additional attributes taken out for brevity)...
    kids = models.ManyToManyField(
        'Person', through='Relationship', related_name='parents')

и модель отношений, которая выглядит следующим образом:

class Relationship(models.Model):
    parent_id = models.IntegerField()
    kid_id = models.IntegerField()

    class Meta:
        unique_together = ('parent_id', 'kid_id')

Я пытаюсь найти лучший способ получить набор детей, связанных с конкретным родителем (кто будет входить в систему).

У меня есть что-то вроде этого:

user = Person.objects.get(id=request.user.id)
print(user.relationship_set.all())

Но это дает мне ошибку 'Person' object has no attribute 'relationship_set'

Как мне лучше всего это сделать?

1 Ответ

0 голосов
/ 06 марта 2019

В итоге я пошел немного по другому маршруту и ​​использовал этот фильтр:

Person.objects.filter(id__in=[ r.kid_id for r in Relationship.objects.filter( parent_id=person_id ) ]
...