如何在Django rest框架中一键将学生添加到老师的课堂

Posted

技术标签:

【中文标题】如何在Django rest框架中一键将学生添加到老师的课堂【英文标题】:How to add students to class in by teacher in one click in Django rest framework 【发布时间】:2021-11-30 20:28:17 【问题描述】:

我有名为 Student 和 Teacher 的模型。老师可以通过get api(学生姓名)查看所有学生。现在的要求是,只需单击学生姓名列表一侧的一个按钮,教师就应该能够将学生添加到他的班级。在这种情况下如何将学生与老师联系起来。因为其他老师也可以将相同的学生添加到其他班级。

class Student(TimeStampAbstractModel):
    user = models.OneToOneField(User, related_name="student", on_delete=models.CASCADE)
    college_name = models.CharField(max_length=255, default="", blank=True)
    address = models.CharField(max_length=255, default="", blank=True)

    def __str__(self):
        return self.user.name

class Teacher(TimeStampAbstractModel):
    user = models.OneToOneField(User, related_name="teacher", on_delete=models.CASCADE)
    address = models.CharField(max_length=255, default="", blank=True)

    def __str__(self):
        return self.user.name

【问题讨论】:

【参考方案1】:

我不能完全回答这个问题,只能回答一点。

如果Teacher 可以有多个学校班级,那么您应该添加第三个班级:

class SchoolClass(models.Model) # or TimeStampAbstractModel ?
    teacher = models.ForeignKey(Teacher, on_delete=models.CASCADE)
    students_in_class = models.ManyToManyField(Student)

如果Teacher 只能有一个类,那么您可以添加

students_in_class = models.ManyToManyField(Student)

到教师模型。

我建议您首先添加适合您应用程序需求的应用程序,然后进入 Django 管理页面并添加教师和一些学生并将它们链接在一起,您将了解 ManyToManyFields 的工作原理.

【讨论】:

以上是关于如何在Django rest框架中一键将学生添加到老师的课堂的主要内容,如果未能解决你的问题,请参考以下文章

将不在模型中的字段添加到 Django REST 框架中的序列化程序

使用 React 和 Django Rest 框架的多步表单处理

如何在 django rest 框架中添加自定义权限和角色

你如何在 django rest 框架中实现 CSRF 令牌?

将 djongo (Mongo ORM) 集成到 Django Rest 框架中

如何在 Django Rest Framework 中编写涉及两个模型的业务逻辑