[英]Create user related info model
我想創建像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')
您必須在admin.py
創建自定義admin.py
class UserTypeModelAdmin(admin.ModelAdmin):
list_display = ('user', 'usertype',)
admin.site.register(UserType, UserTypeModel)
以獲得更多信息list_display
您需要將用戶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],以避免為同一User
創建兩個Usertype
。
還建議使用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)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.