Q-объекты и оператор '&' в django

У меня любопытная проблема.

У меня 3 предмета. Все таки

class Articles(models.Model):
    owner = models.ForeignKey(Author)
    tags = models.ManyToManyField('Tag')


class Tag(models.Model):
     name = models.CharField(max_length=255)

и так у меня 3 статьи. Со всеми теми же тегами: 'tag1' и 'tag2'

И у меня есть запросы

actionsAll = Articles.objects.filter((Q(tags__name__exact="tag1") | Q(tags__name__exact="tag2"))).distinct()

Это дает мне все мои статьи. Он вернет 6 статей без отдельного (), поскольку он будет собирать каждую статью 2 раза, поскольку у них есть оба тега.

Однако с этим запросом:

actionsAll = Articles.objects.filter((Q(tags__name__exact="tag1") & Q(tags__name__exact="tag2"))).distinct()

Это не дает мне статей. Поскольку статьи содержат оба тега, он должен вернуть их все, не так ли?

11
задан Tomasz Jakub Rup 8 December 2015 в 20:48
поделиться