Django M2M queryset с несколькими экземплярами и Q

У меня есть следующие упрощенные модели:

class Surgerytype(models.Model):
    title = models.CharField(max_length=255, null=True, blank=True)


class Content(models.Model):
    surgery = models.ManyToManyField(Surgerytype, null=True, blank=True)

У меня есть множество экземпляров Content, которые сами имеют множество связанных с ними Surgerytypes. Вы можете думать о Surgerytypes как о тегах.

У меня такой запрос:

content = Content.objects.all()
# surgeries is an array of Surgerytype instances titles 

query = content.filter(Q(surgery__title__in=surgeries)

Когда я ajax отправляю на бэкенд тег (т.е. заголовок экземпляра Surgerytype), запрос возвращает все экземпляры Content, которые включают этот тег. Теперь проблема в том, что если я выбираю два тега, запрос возвращает ничего вместо всех экземпляров Content, которые включают эти 2 тега и, возможно, больше тегов. Я нашел на SO, как сделать это для 1 модели M2M в модели Content, но это довольно грязно и не масштабируется (есть еще 3 M2M/фильтра, которые нужно добавить в реальную модель Content).
Есть идеи? Нашел много вопросов, связанных с этой темой, но, похоже, нет окончательного, масштабируемого ответа. Большое спасибо всем вам

Вернуться на верх