【问题标题】:Is there a way to get all ManyToMany related objects in DRF有没有办法在 DRF 中获取所有 ManyToMany 相关对象
【发布时间】:2019-04-23 11:44:19
【问题描述】:

我的应用程序中有标签,可以标记不同的内容,例如新闻、事件... 新闻和事件与标签具有多对多关系。是否可以获取所有使用 Tag 的对象?

我的模型(缩短)如下所示:

标签模型

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()

【问题讨论】:

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


    【解决方案1】:

    试试这个

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

    “news”和“event”由于此处的反向关系而可以访问,它们在各自的模型字段中使用关键字“related_name”定义。

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

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

    【讨论】:

    • 是否也有可能在不知道哪些模型与标签具有多对多关系的情况下实现这一目标?所以我可以去添加一个与标签具有多对多关系的新模型,而不必每次都编辑 tagsView。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多