有没有办法在DRF中获取所有ManyToMany相关对象

时间:2019-04-23 11:44:20

标签: python django-rest-framework django-views

我的应用程序中有标签,并且可以标记不同的内容,例如新闻,事件... 新闻和事件与标签有ManyToMany关系。是否可以获取使用标签的每个对象?

我的模型(简称)如下:

标记模型

class Tag(models.Model):
    title = models.CharField(max_length=35)

新闻模型

class News(models.Model):
    title = models.CharField(max_length=75)
    tag = models.ManyToManyField(Tag, related_name="news")

事件模型

class Event(models.Model):
    title = models.CharField(max_length=75)
    tag = models.ManyToManyField(Tag, related_name="event")

我知道我可以获取所有分配了标签的新闻

tag = self.get_object()
tag.news.all()

但是有可能在没有10个请求的情况下获取所有新闻,事件...吗?我正在寻找类似tag.all.all()

的东西

1 个答案:

答案 0 :(得分:0)

尝试

tag.news.all() | tag.event.all()

由于这里存在反向关系,因此可以访问“新闻”和“事件”,它们在各自的模型字段中用关键字“ related_name”定义。

请注意,这可能会产生重复的标签,因为这是两者之间的联合。

(tag.news.all() | tag.event.all()).distinct()