Как выполнить фильтрацию для ManytoManyField со сквозным входом в Django? - PullRequest
0 голосов
/ 26 апреля 2020

Попытка фильтрации по всем источникам данных протокола с указанием их c источников данных в протоколе.

Попытка использовать это: ProtocolDataSource.objects.filter (protocol__data_sources = ..., protocol__data_sources = ...) но, очевидно, это приводит к ошибке. Точки - это имя источника данных.

1 Ответ

1 голос
/ 26 апреля 2020

Чтобы сделать ваше related_query_name более предсказуемым, я предлагаю добавить параметр related_query_name в ваш ManytoManyField

class Protocol(BaseWithImmutableKey):

    name = models.CharField(
        max_length=200, unique=True, verbose_name='Protocol Name')

    # add related_query_name
    data_sources = models.ManyToManyField(
        DataSource, through='ProtocolDataSource', related_query_name='protocols')


# now you can reference reversely using protocols
DataSource.objects.filter(protocols__name=...)

. Вы можете прочитать больше здесь что связано с именем_пользователя и по имени_пользователя в django

...