ฉันจะเพิ่มผู้ใช้ในกลุ่มใน django โดยใช้ชื่อกลุ่มได้อย่างไร
ฉันสามารถทำได้:
user.groups.add(1) # add by id
ฉันจะทำสิ่งนี้ได้อย่างไร:
user.groups.add(name='groupname') # add by name
ฉันจะเพิ่มผู้ใช้ในกลุ่มใน django โดยใช้ชื่อกลุ่มได้อย่างไร
ฉันสามารถทำได้:
user.groups.add(1) # add by id
ฉันจะทำสิ่งนี้ได้อย่างไร:
user.groups.add(name='groupname') # add by name
คำตอบ:
ค้นหากลุ่มโดยใช้โมเดลกลุ่มที่มีชื่อของกลุ่มจากนั้นเพิ่มผู้ใช้ลงใน user_set
from django.contrib.auth.models import Group
my_group = Group.objects.get(name='my_group_name')
my_group.user_set.add(your_user)
user_set
ใน Django doc? หาที่ไหนไม่ได้
<content_type>_set
เมื่อrelated_name
ไม่ได้ตั้งค่าบนฟิลด์
นี่คือวิธีการทำใน Django เวอร์ชันใหม่ (ทดสอบใน Django 1.7):
from django.contrib.auth.models import Group
group = Group.objects.get(name='groupname')
user.groups.add(group)
Group.objects.get_by_natural_key('groupname')
แต่ก็ไม่ได้ทำให้สั้นลง: D
coredumperror ถูกต้อง แต่ฉันพบสิ่งหนึ่งที่ฉันต้องการแบ่งปันสิ่งนั้น
from django.contrib.auth.models import Group
# get_or_create return error due to
new_group = Group.objects.get_or_create(name = 'groupName')
print(type(new_group)) # return tuple
new_group = Group.objects.get_or_create(name = 'groupName')
user.groups.add(new_group) # new_group as tuple and it return error
# get() didn't return error due to
new_group = Group.objects.get(name = 'groupName')
print(type(new_group)) # return <class 'django.contrib.auth.models.Group'>
user = User.objects.get(username = 'username')
user.groups.add(new_group) # new_group as object and user is added