Для примера:
# models.py
class Tag(models.Model):
name = models.CharField()
content = models.ManyToManyField('Content', through='TagContent')
class Content(models.Model):
title = models.CharField()
description = models.TextField()
tags = models.ManyToManyField('Tag', through='TagContent')
class TagContent(models.Model):
tag = models.ForeignKey('Tag', on_delete=models.CASCADE)
content = models.ForeignKey('Content', on_delete=models.CASCADE)
БД:
-----------------
Tag:
- 1 | One
- 2 | Two
-----------------
Content:
- 1 | One
- 2 | One and Two
- 3 | Two
-----------------
TagContent:
- 1 | 1
- 1 | 2
- 2 | 2
- 2 | 3
Сам вопрос:
Как правильно выбрать из таблицы Content запись с точным набором связей?
То есть если я буду выбирать таким образом:
Content.objects.filter(tags__id=1)
Я получу контент 1 и 2, а мне нужно только 1.
Соответственно если tags__id=2 - получу контент 2 и 3, а надо 2, и т.д.