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).
Есть идеи? Нашел много вопросов, связанных с этой темой, но, похоже, нет окончательного, масштабируемого ответа. Большое спасибо всем вам