我的应用程序中有标签,可以为新闻,事件等不同的事物添加标签。
新闻和事件与标签有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()的东西

最佳答案

尝试这个

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


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

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

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

关于python - 有没有办法在DRF中获取所有ManyToMany相关对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55810475/

10-12 21:17