我正在尝试建立一个教师/学生模型,其中每个学生有一个(或零个)老师,而老师有多个学生。老师应该能够看到学生列表,并且学生除了自己的老师以外,不需要看到其他任何东西。
老师和学生之间的区别很少供我使用。因此,我只创建了一个自定义模型用户,注册时可以选择您是学生还是管理员。如果您是管理员,则必须输入“班级代码”,学生可以使用您的姓名注册。
class User(AbstractBaseUser, PermissionsMixin):
"username, password, email, etc.. goes here"
usertype = models.CharField(max_length=140, null=True)
classcode = models.CharField(max_length=140, null = True, unique=True)
teacher = models.ForeignKey(
settings.AUTH_USER_MODEL,
on_delete=models.CASCADE,
null = True
)
objects = UserManager()
USERNAME_FIELD = "username"
REQUIRED_FIELDS = ['email', 'first_name', 'last_name']
def __str__(self):
return self.username
对于教师而言,教师字段为空,对于学生而言,显然存在与教师的链接。
我正在尝试管理注册。
def create_user(self, email, username, password, first_name, last_name):
user = self.model(
email = self.normalize_email(email),
username = username, first_name = first_name, last_name = last_name)
if user.usertype == "admin": # user is a teacher
user.is_staff = True
### put code here ###
user.set_password(password)
user.save()
return user
我当时在想,当一名老师注册时,我会从{classCode:老师的用户名(或老师自己(?))}}中得到一个字典。我意识到制作一个全局变量来做到这一点很困难。有没有不使用字典就可以解决这个问题的简便方法?