两个Django ManyToMany字段中的匹配量

时间:2018-08-26 10:00:19

标签: django django-models

在我的应用程序中,我想确定对象之间的相似性。 这些对象有几个ManyToMany字段,并且该列表中匹配值的数量将指示相似性。 (例如,如果一首歌曲具有很多常见的艺术家,流派或制作人,则可能会与另一首相似)

class Song:
    genres = models.ManyToManyField(Genre)
    artists = models.ManyToManyField(Artist)
    producers = models.ManyToManyField(Producer)

我可以想象很多比较这些字段的可能方法会非常慢,因为它们在比较之前会加载ManyToMany字段的所有对象。 有没有一种快速的方法可以根据ID来计算匹配数?

我当前的检查方式是:

in_common = len(set(song_one.genres.all()) & set(song_two.genres.all()))

0 个答案:

没有答案