我在两个类之间有一个多对多关系对象,我需要通过多对多额外字段过滤查询集
那是我的三类
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')
如何获取Cards_Tags中m2m关系的字段='developer'的Tags queryset?
您可以使用进行过滤
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')
进行过滤