我有3个模型-项目,团队和一个CustomUser模型。我试图在用户的详细信息页面上显示用户所属团队的列表,并在项目的详细信息页面上显示属于项目团队的用户列表,但我处于停顿状态。
# project/users/models.py
class CustomUser(AbstractUser):
name = models.CharField(max_length=255)
# Relationship Fields
team = models.ManyToManyField(
'users.Team',
related_name="teams",
)
class Team(models.Model):
# Relationship Fields
project = models.OneToOneField(
'projects.Project',
on_delete=models.CASCADE, related_name="projects",
)
# project/projects/models.py
class Project(models.Model):
name = models.CharField(max_length=255)
project/projects/templates/projects/project_detail.html
{% for user in project.team.user.all %}
{{ user.name }}
{% endfor %}
我已经尝试了上面的变体,比如
{% for user in users.teams.projects.all %}
{{ user.name }}
{% endfor %}
但我好像什么都做不出来。我想我正在做一些简单的错误的事情-我已经阅读了关于显示ManyToManyFields的文档,但是我感到困惑!有谁能告诉我正确的方向吗?
发布于 2019-05-23 07:08:44
我不确定,但我认为在这种情况下使用related_name是错误的:
class Team(models.Model):
# Relationship Fields
project = models.OneToOneField(
'projects.Project',
on_delete=models.CASCADE, related_name="projects",
)
这意味着在类的一个对象中,Project将有一个名称为projects的属性,它将是对团队的引用。我相信你想要:
class Team(models.Model):
# Relationship Fields
project = models.OneToOneField(
'projects.Project',
on_delete=models.CASCADE, related_name="team",
)
因此,您将能够调用project.team。
更改代码:
# project/users/models.py
class CustomUser(AbstractUser):
name = models.CharField(max_length=255)
# Relationship Fields
team = models.ManyToManyField(
'users.Team',
related_name="customers",
)
class Team(models.Model):
# Relationship Fields
project = models.OneToOneField(
'projects.Project',
on_delete=models.CASCADE, related_name="team",
)
class Project(models.Model):
name = models.CharField(max_length=255)
因此,现在您可以在模板中执行以下操作:
{% for user in project.team.customers.all %}
{{ user.name }}
{% endfor %}
https://stackoverflow.com/questions/56265578
复制相似问题