簡體   English   中英

創建與用戶相關的信息模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM