Django получает набор запросов через дополнительное поле Many To Many
У меня есть отношение "многие ко многим" между двумя объектами класса, мне нужно получить набор запросов, отфильтрованный по дополнительному полю "многие ко многим"
это мои 3 класса
class Card(models.Model):
title = models.CharField(max_length=250 )
tags = models.ManyToManyField(Tag, through='Cards_Tags')
class Tag(models.Model):
tag = models.ForeignKey(Tag, on_delete=models.CASCADE)
class Cards_Tags(models.Model):
tag = models.ForeignKey(Tag, on_delete=models.CASCADE)
card = models.ForeignKey(Card, on_delete=models.CASCADE)
field = models.CharField( max_length=25, blank=True )
если я использую это, то оно работает, но оно возвращает кверисет Cards_Tags, а мне нужен тот же результат, что и объекты Tags
developers = Cards_Tags.objects.filter(card=obj, field='developer')
как я могу получить набор запросов Tags, где m2m отношения в Cards_Tags имеют поле='developer' ?
Вы можете фильтровать с помощью:
Tag.objects.filter(cards_tags__card=obj, cards_tags__field='developer')
или вы можете работать через ManyToManyField
:
obj.tags.filter(cards_tags__field='developer')
Примечание: Модели в Django пишутся в PascalCase, а не snake_case, поэтому вы можете захотеть переименовать модель из
.вCards_Tags
CardTag
. В этом случае вы фильтруете с помощьюobj.tags.filter(cardtag__field='developer')