Django queryset для фильтрации объектов с одинаковым множеством полей - PullRequest
0 голосов
/ 04 марта 2020

У меня есть такая модель.

class Component(models.Model):
     options = models.ManyToManyField('prices.Option')
     period = models.IntegerField()

Мне нужно выбрать все компоненты с одинаковым периодом и теми же параметрами, что и у одного компонента cmp . Этот набор запросов не работает.

similar_components = Component.objects.filter(period=cmp.period, options=cmp.options)

Я не могу найти способ сделать набор запросов основанным на этом множестве полей options.

1 Ответ

1 голос
/ 04 марта 2020

Отношения многие ко многим

from django.db.models import Q

options = cmp.options.all()
filter_kwargs = (Q(options=option) for option in options)
similar_components = Component.objects.filter(period=cmp.period).filter(*filter_kwargs)
...