普通的Django查询以显示“扁平化的”用户/组(ManyToMany)列表,可以通过以下步骤实现:
User
和Group
模型,也可以自定义模型。filter()
或get()
方法来获取特定条件下的用户或组。例如,可以使用User.objects.filter()
来获取特定条件下的用户列表,使用Group.objects.get()
来获取特定条件下的组。user.groups.all()
来获取用户所属的所有组,使用group.user_set.all()
来获取属于某个组的所有用户。values_list()
方法来获取特定字段的值列表。例如,可以使用user.groups.all().values_list('name', flat=True)
来获取用户所属组的名称列表。以下是一个示例代码:
from django.shortcuts import render
from django.contrib.auth.models import User, Group
def user_group_list(request):
user = User.objects.get(username='username') # 获取特定用户
groups = user.groups.all().values_list('name', flat=True) # 获取用户所属组的名称列表
return render(request, 'user_group_list.html', {'groups': groups})
在上述示例中,我们通过User.objects.get()
获取特定用户名的用户对象,然后通过user.groups.all()
获取该用户所属的所有组,最后使用values_list()
方法获取组的名称列表。将获取到的数据传递给名为user_group_list.html
的模板进行展示。
在模板中,可以使用以下代码展示用户所属组的列表:
{% for group in groups %}
<p>{{ group }}</p>
{% endfor %}
以上就是普通的Django查询以显示“扁平化的”用户/组列表的方法。在实际应用中,可以根据具体需求进行适当的调整和扩展。
领取专属 10元无门槛券
手把手带您无忧上云