gpt4 book ai didi

python - Django 在多对多关系模型中轻松检索项目

转载 作者:行者123 更新时间:2023-11-29 11:35:32 24 4
gpt4 key购买 nike

我与这些实体存在多对多关系:

class Playlist(models.Model):
videos = models.ManyToManyField("Video")

class Video(models.Model):
pass

我需要第三个模型来用这两个实体的外键替换 M2M 关系,而无需实际修改我们访问和查询播放列表视频的方式 PlayList().videos,这将把我们带入代码重构 hell 。

这是第三种关系:

class PlaylistVideos(models.Model):
playlist = models.ForeignKey('PlayList')
video = models.ForeignKey('Video')
new_field = models.IntegerField()
#... other stuff

总而言之,我想要一个别名属性之类的东西,以便轻松访问特定播放列表的视频,有什么建议吗?

最佳答案

您可以使用直通表:

class Playlist(models.Model):
videos = models.ManyToManyField("Video", through="PlaylistVideos")

这已记录在案here 。您仍然可以通过 playlist.videos 访问视频,但它会生成多个查询,因此效率会比以前低。这在How do I make Django ManyToMany 'through' queries more efficient?中进行了讨论。 。您需要确定额外的查询是否会对您的应用程序产生重大影响。正如 docs 中所讨论的,如果不使用 PlaylistVideos 模型,您将无法将新视频添加到播放列表,因为您需要为 new_field 指定一个值。

关于python - Django 在多对多关系模型中轻松检索项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36658105/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com