如何查询和显示Django模板中每个用户组(多对多(关系的用户信息及其组?
结果应该是:
| User username | User email | Group name |
| ------------- | -------------- | ----------- |
| user1 | user1@mail.com | groupA |
| user1 | user1@mail.com | groupB |
| user2 | user2@mail.com | groupA |
| user2 | user2@mail.com | groupC |
| user3 | user3@mail.com | groupA |
我的问题类似于Vanilla Django Query,显示';扁平';用户/组(ManyToMany(列表,但希望在表中显示更多用户详细信息。
我天真地以为这样的事情会奏效,但没有。
{% for group in groups %}
{% for user in group.users.all %}
<tr>
<td>{{user.username}}</td>
<td>{{user.email}}</td>
<td>{{group.name}}</td>
</tr>
{% endfor %}
{% endfor %}
使用原始SQL查询解决了我的问题:https://stackoverflow.com/a/38780451/991505,但我正在用Django/Python的方式寻找更好的答案。
如果您使用Django的Group
,您可以使用访问用户集
{% for group in groups %}
{% for user in group.user_set.all %}
…
{% endfor %}
{% endfor %}
您可以通过一个额外的查询预取所有相关用户来进一步提高效率,因此在您使用的视图中:
groups = Group.objects.prefetch_related('user_set')