2017-03-06 2 views
1

Ich bin neu in Django und versuche, eine App mit zwei Benutzertypen (Freelancer und Kunden) zu erstellen. Ich verstehe, wie ein Benutzerprofil-Klasse erstellen und es funktioniert gut für mich:Mehrere Benutzertypen in Django

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    description = models.CharField(max_length=100, default='') 
    country = models.CharField(max_length=100, default='') 
    website = models.URLField(default='') 
    phone = models.IntegerField(default=0) 

def create_profile(sender, **kwargs): 
    if kwargs['created']: 
     user_profile = UserProfile.objects.create(user=kwargs['instance']) 


post_save.connect(create_profile, sender=User) 

Dies funktioniert gut für mich auf einem einen Benutzertyp Benutzer. Aber jetzt baue ich eine App mit zwei Arten von Benutzern (Freelancer und Kunden), was ist der beste Ansatz, um dies zu tun. Beide Benutzer haben unterschiedliche Ansichten und Informationen. Soll ich:

  1. Erstellen Sie 2 verschiedene Anwendungen, und wiederholen Sie die normale Registrierung und Anmeldung für jeden.
  2. Wenn ich das oben tun, hoffe, dass die Freiberufler, wenn sie eingeloggt sind, nicht auf die Kundenansicht zugreifen.
  3. Wie füge ich den Benutzertyp zum Benutzerprofil hinzu, wenn ich mich entscheide, eine App und ein Modell dafür zu verwenden. Bitte ich brauche einen Schritt für Schritt Anfänger Ansatz oder einen Link zu relevanten Quelle. Danke.

Antwort

0

verwenden Sie konnten dieses versuchen:

class UserProfile(models.Model): 
    user = models.ForeignKey(User) 
    #define general fields 

class Freelancer(models.Model): 
    profile = models.ForeignKey(UserProfile) 
    #freelancer specific fields 

    class Meta: 
     db_table = 'freelancer' 

class Customers(models.Model): 
    profile = models.ForeignKey(UserProfile) 
    #customer specific fields 

    class Meta: 
     db_table = 'customer' 

Sie können über das UserProfile beliebig viele Benutzer haben.

2

Sie sollten nur Groups Django Mechanismus verwenden müssen - Sie müssen freelancer zwei Gruppen erstellen und lassen common sagen und prüfen, ob Benutzer in der ersten oder zweiten Gruppe - zeigen ihm dann entsprechende Ansicht

Um zu überprüfen, ob Benutzer in der Gruppe ist, können Sie

User.objects.filter(pk=userId, groups__name='freelancer').exists() 
+0

Wie füge ich die Gruppe während der Registrierung hinzu? –

+0

Sie sollten während der Registrierung den Benutzer zur definierten Gruppe hinzufügen, nicht die Gruppe selbst - sie sollte vorher definiert werden –