Я хочу создать дружеские отношения между организациями.Я добавил поле connected_organisations
в свою модель Organisation
:
class Organisation(models.Model):
...
connected_organisations = models.ManyToManyField('self',
related_name='organisations_connected',
through='Connection',
through_fields=('requester', 'requestee'),
symmetrical=False,
blank=True)
Затем я создал Connection
в качестве промежуточной модели:
class Connection(models.Model):
requester = models.ForeignKey(Organisation, related_name='requester', null=True, on_delete=models.CASCADE)
requestee = models.ForeignKey(Organisation, related_name='requestee', null=True, on_delete=models.CASCADE)
is_connected = models.BooleanField(default=False)
Поле is_connected
указывает, является лизапрос на дружбу одобрен запрашивающим или, если запрос еще не завершен.
Я создаю соединение между org1
и org2
с:
Connection.objects.create(requester=org1, requestee=org2)
Я знаю, что могу сделать:
org1.connected_organisations.all()
и это вернет org2
, но я не могу найти, как я могу отфильтровать их по полю is_connected
.
Я пробовал что-то вроде:
Organisation.objects.filter(connected_organisations__requestee=org2, connected_organisations__is_connected=True)
но я получаю:
django.core.exceptions.FieldError: Связанное поле получило недопустимый поиск: is_connected