Я установил django_group_manager
и определил некоторых участников, а затем выделил несколько ролей из панели администратора django. Теперь я хочу напечатать все роли участников, но не могу:
>>> from groups_manager.models import Group, GroupType, Member
>>> member = Member.objects.get(username='myuser')
>>> member
<Member: test user>
Как я могу распечатать роли каждого члена?
Попробуй это:
members = Member.objects.all() # or any other query
for member in member:
for role in member.role_set.all():
print (role)
вы не можете перебирать объект, если используете member = Member.objects.get(username='myuser') you need to skip the first line in the loop, just user
для роли в member.role_set.all(): print (role)`
get
возвращает один объект, а filter
возвращает итерируемый набор объектов.
Вы можете запросить модель GroupMemberRole
:
from groups_manager.models import GroupMemberRole, Member
member = Member.objects.get(username='myuser')
roles = GroupMemberRole.objects.filter(
groupmember__member=member
)
print(roles)
Модель GroupMemberRole [GitHub] наследует два поля label
и codename
, поэтому вы можете, например, перечислить их и вывести кодовое имя:
for role in roles:
print(role.codename)
Вот у меня: AttributeError: 'Member' object has no attribute 'roles'
@M.J.: извините, перепутал группу с участником.
TypeError: объект «Член» не повторяется