Django:如何获取列表相关的外键记录?
Django: how to get list related ForeignKey records?
我正在使用 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_related
, prefetch_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>
向任务添加多对多字段,使用您已有的直通模型:
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='+'
。)
我正在使用 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_related
, prefetch_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>
向任务添加多对多字段,使用您已有的直通模型:
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='+'
。)