【问题标题】:How to make a serializer for multiple users (student & teacher)?如何为多个用户(学生和老师)制作序列化程序?
【发布时间】:2021-03-06 14:27:45
【问题描述】:

您好,我是 Django Rest Framework 的新手,我很难使用序列化程序。我使用抽象用户扩展了用户模型。我插入了两个新字段 is_student 和 is_teacher 然后我将这两个值都设置为 false 作为默认值。然后我将它们放在自己的模型中,然后将它们中的每一个应用于用户模型的一对一关系。我的问题是序列化程序。我如何从中制作序列化程序。我希望学生和老师与用户模型有关系,并且能够执行 http 操作,例如 get、post、put 等。

from django.db import models
from django.contrib.auth.models import AbstractUser
from django.conf import settings
# Create your models here.

class User(AbstractUser):
    is_student = models.BooleanField(default=False)
    is_teacher = models.BooleanField(default=False)

class Course(models.Model):
    name = models.CharField(max_length=200)
    description = models.TextField()
    price = models.FloatField()

    def __str__(self):
        return self.name

class Student(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, primary_key=True)
    age = models.IntegerField()
    address = models.CharField(max_length=200)

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

class Teacher(models.Model):
    user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE, primary_key=True)
    description = models.TextField()
    course_teaching = models.ForeignKey(Course, on_delete=models.CASCADE)
    students = models.ManyToManyField(Student)

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

【问题讨论】:

  • 我不明白问题是什么。 teacher_obj.user 应该返回与该教师 obj 相关的用户对象。

标签: python django database rest django-rest-framework


【解决方案1】:

【讨论】:

    最近更新 更多