对带有扩展用户的反向 ManyToMany Django 感到困惑
Confused about reverse ManyToMany Django with extended User
所以我有一个从用户扩展的 userprofile
。每个 UserProfile
都有一个 manyToMany
和 Effect_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 %}
所以我有一个从用户扩展的 userprofile
。每个 UserProfile
都有一个 manyToMany
和 Effect_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 %}