对带有扩展用户的反向 ManyToMany Django 感到困惑

Confused about reverse ManyToMany Django with extended User

所以我有一个从用户扩展的 userprofile。每个 UserProfile 都有一个 manyToManyEffect_module。我想在具有用户名称的效果模型上添加一个作者字段

class Effect_module(models.Model):
    created_at = models.DateTimeField(auto_now_add=True)
    title = models.CharField(max_length=255)
    description = models.TextField()
    html = models.TextField(default='')
    css = models.TextField(default='')
    js = models.TextField(default='')
    up_votes = models.IntegerField()
    down_votes = models.IntegerField()
    ##############################################
    author = models.ManyToManyField('UserProfile')

class UserProfile(models.Model):
    user = models.OneToOneField(User)
    effects = models.ManyToManyField(Effect_module)

在我的模板中 effect.author 打印 "effect_modules.UserProfile.None"

澄清一下,Effect_module 可以有多个作者吗?如果是这样,您根本不需要在 UserProfile 模型中使用 ManytoMany。

而且你不能那样调用 ManytoMany 字段,你可以通过 .all 来调用。见 docs.

所以你会使用 effect.author.all

看到文档后,我发现我没有在 userprofile 对象上调用 .all。我还看到,当您执行反向 m2m 时,设置了包含所有数据的 _set 属性。好东西,谢谢大家

然后我不得不遍历每个主数组并执行我的操作。

{% for author in effect.userprofile_set.all %}
    {{ author.user.first_name }}
{% endfor %}