[英]Django: how to get list related ForeignKey records?
I am using Django v1.11. 我正在使用Django v1.11。 Here are 2 models: 这是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='+')
So, I want to get list of tasks and print in one column list of users that are related to this task. 因此,我想获取任务列表并在与该任务相关的用户的一列列表中打印。 How to do that? 怎么做? The problem is tried a lot: select_related
, prefetch_related('task_user')
and so on.. but nothing works. 问题是尝试了很多: select_related
, prefetch_related('task_user')
等等..但没有任何工程。 In some cases there are no sql error, but it prints task.User.None
在某些情况下,没有sql错误,但会打印task.User.None
tasks = Task.objects.all()
View must be: 视图必须是:
<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>
Add a many-to-many field to Task, using the through model you already have: 使用现有模型,将多对多字段添加到任务中:
class Task(models.Model):
users = models.ManyToManyField(settings.AUTH_USER_MODEL, through='TaskUser')
and use .all
when iterating: 并在迭代时使用.all
:
{% for user in task.users.all %}
{{ user.id }}
{% endfor %}
(Note, you should remove the related_name='+'
from the TaskUser.user
field.) (注意,您应该从TaskUser.user
字段中删除TaskUser.user
related_name='+'
。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.