from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
email = models.EmailField(unique=True)
is_student = models.BooleanField(default=False)
is_teacher = models.BooleanField(default=False)
def __str__(self):
return self.email
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
def __str__(self):
return self.user.email
class Teacher(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
def __str__(self):
return self.user.email
class Course(models.Model):
name = models.CharField(max_length=100)
description = models.TextField()
students = models.ManyToManyField(Student, related_name='courses')
teachers = models.ManyToManyField(Teacher, related_name='courses')
def __str__(self):
return self.name
# 创建新的课程
course = Course.objects.create(name='计算机科学入门', description='学习计算机编程的基础知识')
# 添加学生和教师
student = Student.objects.get(user__email='student@example.com')
teacher = Teacher.objects.get(user__email='teacher@example.com')
course.students.add(student)
course.teachers.add(teacher)
这是一个简单的解决方法,它允许您在Django中轻松处理不同类型的用户之间的多对多关系。
下一篇:不同类型员工的SQL查询