python - 创建用户相关信息模型
问题描述
我想创建像 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')
解决方案
您需要创建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
a 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)
推荐阅读
- android - 如何使用 Tensorflow lite 实时计算对象?
- sparql - 如何在 sparql 中查询个人及其对象属性(使用耶拿)
- haskell - 我们如何将 Haskell 元组匹配到 Agda 数据类型?
- r - R 错误:依赖项 'xml2'、'httr' 不可用于包(Linux Mint 20.1)
- azure-iot-central - 如何通过 mqtt 将遥测数据发送到 IoT Central 中的第二个组件?
- swiftui - 通过 .onTapGesture 闭包激活 SwiftUI 2.0 链接
- google-apps-script - 通过 Google 应用脚本打开现有电子表格
- javascript - Google Slide API - 使用 API 为 Google 幻灯片创建 PIE 形状并设置开始和结束角度?
- swift - SwiftUI 选择器 调用中位置 #1、#2、#3 的额外参数
- windows - 为什么 Windows x64 调用约定需要将 XMM (FP) args 复制到整数寄存器,用于 printf 等可变参数函数?