首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在模板中显示用户团队

在模板中显示用户团队
EN

Stack Overflow用户
提问于 2019-05-23 06:02:37
回答 1查看 21关注 0票数 0

我有3个模型-项目,团队和一个CustomUser模型。我试图在用户的详细信息页面上显示用户所属团队的列表,并在项目的详细信息页面上显示属于项目团队的用户列表,但我处于停顿状态。

代码语言:javascript
复制
# 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", 
    )
代码语言:javascript
复制
# project/projects/models.py

class Project(models.Model):
    name = models.CharField(max_length=255)

project/projects/templates/projects/project_detail.html

代码语言:javascript
复制
{% for user in project.team.user.all %}
    {{ user.name }}
{% endfor %}

我已经尝试了上面的变体,比如

代码语言:javascript
复制
{% for user in users.teams.projects.all %}
    {{ user.name }}
{% endfor %}

但我好像什么都做不出来。我想我正在做一些简单的错误的事情-我已经阅读了关于显示ManyToManyFields的文档,但是我感到困惑!有谁能告诉我正确的方向吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-23 07:08:44

我不确定,但我认为在这种情况下使用related_name是错误的:

代码语言:javascript
复制
class Team(models.Model):
# Relationship Fields
project = models.OneToOneField(
    'projects.Project',
    on_delete=models.CASCADE, related_name="projects", 
)

这意味着在类的一个对象中,Project将有一个名称为projects的属性,它将是对团队的引用。我相信你想要:

代码语言:javascript
复制
class Team(models.Model):
# Relationship Fields
project = models.OneToOneField(
    'projects.Project',
    on_delete=models.CASCADE, related_name="team", 
)

因此,您将能够调用project.team。

更改代码:

代码语言:javascript
复制
# 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)

因此,现在您可以在模板中执行以下操作:

代码语言:javascript
复制
{% for user in project.team.customers.all %}
    {{ user.name }}
{% endfor %}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56265578

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档