创建与用户相关的信息模型

时间:2019-05-04 09:54:58

标签: python django

我想创建一个像Coursera.org这样的网站。所以我需要创建两个用户类型 像学生和老师。最好的方法是什么?

我尝试手动创建用户类型并在models.py中预定义用户类型。但是用户类型未显示在管理页面中。我在做什么错了?

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 个答案:

答案 0 :(得分:0)

您必须在admin.py中创建自定义ModelAdmin

class UserTypeModelAdmin(admin.ModelAdmin):
    list_display = ('user', 'usertype',)

admin.site.register(UserType, UserTypeModel)

获取更多信息list_display

答案 1 :(得分:0)

您需要将usertype设置为特定字段,例如在CharField上设置choices [Django-doc]的字段,例如:

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)

请注意,您可能希望将ForeignKey设为OneToOneField [Django-doc],以避免为同一Usertype创建两个User

还建议使用get_user_model [Django-doc]而不是直接引用User模型,因为这样可以更方便地更改用户模型,例如:

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)

在您的app/admin.py中,您还需要“注册”您的模型,以便其显示在管理站点中:

# app/admin.py

from django.contrib import admin
from app.models import Usertype

admin.site.register(Usertype)