Menambahkan pengguna ke grup di Django


139

Bagaimana saya menambahkan pengguna ke grup di Django dengan nama grup?

Aku bisa melakukan ini:

user.groups.add(1) # add by id

Bagaimana saya melakukan sesuatu seperti ini:

user.groups.add(name='groupname') # add by name

Apakah versi solusi ini sensitif? Ketika saya mencoba ini adalah Django 1.8, saya mendapat "kata kunci tak terduga: nama"
— rschwieb

Jawaban:


248

Temukan grup menggunakan model Grup dengan nama grup, lalu tambahkan pengguna ke 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)

17
Terima kasih untuk ini. Tampaknya konyol bahwa beberapa hal paling mendasar hilang atau sulit ditemukan di django docs
— Francis Yaconiello

1
docs.djangoproject.com/en/dev/intro/tutorial01 Ada contoh serupa di bagian 'Bermain dengan API'
— juankysmith

9
Tutorialnya cukup berguna, maksud saya adalah saya berharap dapat melihat di bagian dokumen di bawah auth untuk membuat grup secara terprogram. alih-alih semua yang ada adalah paragraf yang lemah: docs.djangoproject.com/en/1.3/topics/auth/#groups Saya kira perlu diingat bahwa model auth hanya model biasa, dan referensi model standar berlaku.
— Francis Yaconiello

dimana ada user_setdi Django doc? Saya tidak dapat menemukannya di mana pun
— Minh Thai

1
@MinhThai nilai default untuk bidang hubungan terbalik adalah <content_type>_setketika related_nametidak disetel pada bidang tersebut.
— sox dengan Monica

99

Berikut cara melakukannya dalam versi modern Django (diuji dalam Django 1.7):

from django.contrib.auth.models import Group
group = Group.objects.get(name='groupname')
user.groups.add(group)

1
Anda juga dapat melakukannya Group.objects.get_by_natural_key('groupname'), tetapi tidak membuatnya korsleting: D
— CpILL

2
@ kutu buku Di mana pun Anda perlu melakukannya. Mungkin dalam kode untuk Tampilan yang melakukan tugas Grup.
— coredumperror
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.