【问题标题】:Django: how to get list related ForeignKey records?Django:如何获取列表相关的 ForeignKey 记录?
【发布时间】:2018-03-31 18:52:52
【问题描述】:

我正在使用 Django v1.11。这里有 2 个模型:

class Task(models.Model):
    title = models.CharField()

class TaskUser(models.Model):
    task = models.ForeignKey(Task, related_name='task_user')
    user = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='+')

所以,我想获取任务列表并在一列中打印与此任务相关的用户列表。怎么做?这个问题尝试了很多:select_relatedprefetch_related('task_user') 等等.. 但没有任何效果。在某些情况下没有sql错误,但会打印task.User.None

tasks = Task.objects.all()

视图必须是:

<table>
<tr>
    <td>Title</td>
    <td>Users</td>
</tr>
{% for task in tasks %}
<tr>
    <td>{{ task.title }}</td>
    <td>
    {% for user in task.users %}
        {{ user.id }}
    {% endfor %}
    </td>
</tr>
{% endfor %}
</table>

【问题讨论】:

    标签: python django django-models foreign-keys django-orm


    【解决方案1】:

    使用您已有的直通模型向 Task 添加多对多字段:

    class Task(models.Model):
        users = models.ManyToManyField(settings.AUTH_USER_MODEL, through='TaskUser')
    

    并在迭代时使用.all

    {% for user in task.users.all %}
        {{ user.id }}
    {% endfor %}
    

    (注意,您应该从TaskUser.user 字段中删除related_name='+'。)

    【讨论】:

      猜你喜欢
      • 2011-02-01
      • 2017-04-09
      • 2018-05-25
      • 1970-01-01
      • 2015-10-29
      • 1970-01-01
      • 1970-01-01
      • 2013-12-22
      • 1970-01-01
      相关资源
      最近更新 更多