我在django中是个新手,所以我的问题可能很基本,但是如果您能帮助我,那还是很棒的。除了最简单的方法外,我什至不知道该怎么解决这个问题。 我有这样的模型:
afterClosed()
现在我想担任给定项目的所有角色:
mergeMap
并在模板上将所有角色显示为具有作业名称(来自作业模型)和用户名(来自用户模型)的行,如下所示:
class Role(models.Model):
id = models.AutoField(primary_key=True)
job = models.ForeignKey('Job', on_delete=models.CASCADE)
project = models.ForeignKey('Project', on_delete=models.CASCADE)
user = models.ForeignKey('users.User', on_delete=models.CASCADE)
答案 0 :(得分:3)
{% for role in current_project.role_set.all %}
<tr>
<td>{{ role.job.name }}</td>
<td>{{ role.user.username }}</td>
</tr>
{% endfor %}
编辑:
有没有办法在模型或视图中做到这一点(不使用其他变量),例如prefetch_related?因为模板中的方法会生成多个重复的SQL查询。
IIRC,您可以在视图中的prefetch_related
查询集上应用select_related
和Project
,即
qs = Project.objects.prefetch_related(....).select_related(...)
current_project = qs.get(pk=...)
但这是从内存中提取的,我现在没有时间再次检查此内容...