2017-09-02 1 views
1

Ich bin jetzt verwirrend. Ich habe 3 Apps in einem Projekt.Create Benutzer von der Kommandozeile in Django

App1: Verwendung von Enduser (Web-Ansicht-basierte Anwendung)

App2: Verwenden von Service Provider (Web-Service)

Anw3: vom Systemadministrator verwenden.

Ich möchte für jede apps Django-Authentifizierungssystem verwenden. Ich kann Django-Projekt machen, um den Benutzer von App1 zu authentifizieren. Aber wie kann ich das Authentifizierungssystem von App2 und App3 gleichzeitig benutzen?

Wenn ich python manage.py createsuperuser Befehl ausführen, machen Django App1 Superuser. Wie kann ich mit diesem Befehl App2 und App3 erstellen?

Hat jemand eine Idee? Bitte hilf mir.

Models.py

### This table is for end user. 
class RemoshinUser(models.Model): 

    user = models.OneToOneField(User) 
    user_type = models.SmallIntegerField(default=1) 
    kana_name = models.CharField(max_length=128, blank=True) 
    date_of_birth = models.DateField(blank=True, null=True) 
    sex = models.SmallIntegerField(null=True) 
    postno = models.CharField(max_length=7, blank=True) 
    address1 = models.CharField(max_length=128) 
    address2 = models.CharField(max_length=128, blank=True) 
    telno = models.CharField(max_length=16, blank=True) 
    photo = models.ImageField(upload_to='users/%Y/%m/%d', blank=True) 

    create_date = models.DateTimeField(auto_now_add=True) 
    modify_date = models.DateTimeField(auto_now=True) 

    class Meta: 
     db_table = 'remosys_remoshin_user_tbl' 
     swappable = 'AUTH_USER_MODEL' 


### This table is for service provider. 
class RemoshinDoctor(models.Model): 
    user = models.OneToOneField(User) 
    user_type = models.SmallIntegerField(default=2) 
    doctor_id = models.CharField(max_length=16, primary_key=True) 
    clinic_id = models.ForeignKey(Clinic) 
    photo = models.ImageField(blank=True, null=True) 
    create_date = models.DateTimeField(auto_now_add=True) 
    modify_date = models.DateTimeField(auto_now=True) 

    class Meta: 
     db_table = 'remosys_remoshin_doctor_tbl' 



### This table is for system administrator. 
class RemoshinManager(models.Model): 
    user = models.OneToOneField(User) 
    user_type = models.SmallIntegerField(default=3) 
    manager_id = models.CharField(max_length=16, primary_key=True) 
    create_date = models.DateTimeField(default=timezone.now) 
    modify_date = models.DateTimeField(default=timezone.now) 

    class Meta: 
     db_table = 'remosys_remoshin_manager_tbl' 
+0

Haben Sie benutzerdefinierte Benutzermodelle für jede App? Ich verstehe das Problem nicht? –

+0

wenn Sie einen Benutzer erstellen, ist in dem gesamten Projekt nicht nur in der App –

+0

Ich benutze kein benutzerdefiniertes Benutzermodell. Ich benutze eins-zu-eins-Modell für erweitert Benutzer. Muss ich das benutzerdefinierte Benutzermodell verwenden? –

Antwort

2

Sie können Benutzer von der Kommandozeile erstellen unter Methode. Wenn ein Benutzer erstellt wird, wird er jedoch für das gesamte Projekt und nicht für die eine App erstellt.

[email protected]> manage.py shell 
>>> from django.contrib.auth.models import User 
>>> user=User.objects.create_user('username', password='userpassword') 
>>> user.is_superuser=False 
>>> user.is_staff=False 
>>> user.save() 
+0

Vielen Dank für die Antwort. Kann ich im django nicht 3 verschiedene Benutzerauthentifizierungsfunktionen in einem Projekt erstellen? Ich mache keinen Sinn, weil viele Web-Service-Endbenutzer-Login-Funktion sowie Systemverwalter-Management-Funktion haben müssen. Muss ich das Projekt trennen? –

+0

Aber das kann erreicht werden, indem man zuerst einen normalen Login erstellt und dann höheren Level bekommt. Damit sie aus beiden Perspektiven auskommen können. –

+0

@KazzzzStudio, Wenn die Lösung geholfen hat, vot und wählen Sie meine Antwort. Danke für die Kooperation. –

Verwandte Themen