2017-06-15 1 views
0

Ich habe ein Modell, um das Benutzermodell mit einigen zusätzlichen Feldern zu erweitern. Das "Therapeut" -Modell verfügt über ein Benutzerfeld, bei dem es sich um ein OneToOneField handelt, das aus django.contrib.auth.models mit dem Benutzer verbunden ist. Hier ist der Code:Django: Erstelle Mitarbeiter Benutzer von OneToOneField

from django.db import models 
from django.contrib.auth.models import User 

class Therapeut(models.Model): 
    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    # some more fields here 

Nun, wenn ich einen „therapeuten“ aus dem Modell durch die Django Admin hinzufügen mag, kann ich aus den verfügbaren Benutzern wählen oder einen neuen hinzufügen.

Wenn ich auf Ich füge ein neues hinzu (grün + neben dem Dropdown-Menü), möchte ich, dass der neue Benutzer den Status des Personals hat und ihn der Benutzergruppe "therapeuten" hinzufügt, um die Berechtigungen dafür zu verwalten neuer Benutzer.

Ich sehe nicht, wie man das (automatisch) archieve, noch habe ich die Option, Mitarbeiterstatus und Benutzergruppe im Popup zu setzen. Hinweis Ich bin als Superuser angemeldet. Siehe Bild:

django add user from onetoonefield Jede Hilfe, wie dies zu tun wäre, würde sehr geschätzt werden!

Antwort

0

OK so habe ich herausgefunden, wie es zu tun, ich bin die Lösung hier als Referenz hinzugefügt:

die Aufschalten Methode auf der Therapeut Klasse speichert etwa so:

class Therapeut(models.Model): 

    user = models.OneToOneField(User, on_delete=models.CASCADE) 
    # some more fields here 

    # override save method to add staff status to connected user and add it to therapeutengroup 
    def save(self, *args, **kwargs): 

     userObj = self.user 

     userObj.is_staff = True 
     userObj.save() 

     therapGroup = Group.objects.get(name='therapeut') 
     therapGroup.user_set.add(userObj) 

     super(Therapeut, self).save(*args, **kwargs) 

Allerdings, wenn jemand sonst hat eine bessere oder andere Lösung, Mehr als willkommen, es hier vorzuschlagen!

Verwandte Themen