如何解决具有 2 个级别的 Django ManyToMany 关系

How to solve Django ManyToMany relationship with 2 levels

我在 Django 1.11 中有这样的结构:

class Profile(models.Model):
    username = models.CharField()

class Post(models.Model):
    profile = models.ForeignKey(Profile)
    hashtag = models.ManyToManyField(Hashtag)

class Hashtag(models.Model):
    name = models.CharField()

现在这会创建中间 table post_hashtag,但是我如何使用 profile.hashtags.all() 访问所有主题标签?

您可以通过过滤器获取这些,例如:

Hashtag.objects.filter(<b>post__profile=<i>my_profile</i></b>)

因此,如果您想将其作为 属性 添加到 Profile class 中,例如,您可以将其实现为:

class Profile(models.Model):
    username = models.CharField()

    @property
    def <b>hashtags</b>(self):
        return Hashtag.objects.filter(<b>post__profile=self</b>)