我想创建一个像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')
答案 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)