Erstellen von Benutzer-Informationen Modell

Ich möchte das erstellen von web-Seiten wie coursera.org. So brauche ich zum erstellen von zwei usertypes wie Schüler und Lehrer. was ist der beste Weg, das zu tun?

Ich habe versucht, manuell erstellen usertypes und vordefinierten Benutzertypen in models.py. Aber usertype nicht zeigen, bis in der admin Seite. was ia falsch mache?

from django.db import models
from django.contrib.auth.models import User
# Create your models here.

class Usertype(models.Model):
    user = models.ForeignKey(User,related_name = 'Usertype')
    usertype = ('Student','Teacher')

2 Antworten

  • HariHaraSudhan
    4. Mai 2019

    erstellen Sie benutzerdefinierte ModelAdmin in admin.py

    class UserTypeModelAdmin(admin.ModelAdmin):
        list_display = ('user', 'usertype',)
    
    admin.site.register(UserType, UserTypeModel)
    

    für extra info list_display

  • Willem Van Onsem
    4. Mai 2019

    Sie brauchen, um machen usertype ein bestimmtes Gebiet, zum Beispiel ein CharField, wo Sie die choices [Django-doc], wie:

    from django.db import models
    from django.contrib.auth.models import User
    
    USERTYPE_CHOICES = (
        ('S', 'Student'),
        ('T', 'Teacher')
    )
    
    class Usertype(models.Model):
        user = models.ForeignKey(User,related_name = 'Usertype')
        usertype = models.CharField(max_length=1, choices=USERTYPE_CHOICES)

    Beachten Sie, dass Sie wahrscheinlich wollen, um die ForeignKey a OneToOneField [Django-doc] statt um zu vermeiden das zwei Usertypes für die gleichen User.

    Es ist auch ratsam, get_user_model [Django-doc] statt auf die User Modell direkt, da macht das ändern der Benutzer-Modell, mehr bequem, wie:

    from django.db import models
    from django.contrib.auth import get_user_model
    
    USERTYPE_CHOICES = (
        ('S', 'Student'),
        ('T', 'Teacher')
    )
    
    class Usertype(models.Model):
        user = models.OneToOneField(get_user_model(), related_name='Usertype')
        usertype = models.CharField(max_length=1, choices=USERTYPE_CHOICES)

    In app/admin.py, müssen Sie auch auf "registrieren" Ihr Modell so, dass es zeigt sich in der admin-Seite:

    # app/admin.py
    
    from django.contrib import admin
    from app.models import Usertype
    
    admin.site.register(Usertype)