HTML输入当前不支持列表。在Django rest API框架中

时间:2019-07-08 09:59:45

标签: python django django-rest-framework

我的项目是关于大学系统的。定义了2个名为Student和Professor的自定义用户,这些自定义用户继承自Django用户模型。有一个课程模型与教授模型具有ManyToMany关系,以定义课程并为每门课程定义教授。我使用CreateMixinModelUpdateMixinModelDestroyMixinModel来更新,创建和删除课程。 CRUD已正确应用。  但是显示教授的信息时出现了问题,它只返回了教授ID。我在CourseCreateSErializer中使用了嵌套的序列化程序,以在课程信息旁边显示教授信息。现在,我无法编辑课程对象。

我希望能够编辑课程对象

models.py

class Professor(models.Model):
    user = models.OneToOneField(CustomUser, on_delete=models.CASCADE)
    professor_no = models.PositiveIntegerField()

    def get_full_name(self):
        return self.user.first_name

    def __unicode__(self):
        return self.user.first_name + " " + self.user.last_name

    def __str__(self):
        return self.user.first_name + " " + self.user.last_name


class Course(models.Model):
    professor = models.ManyToManyField(Professor)
    name = models.CharField(max_length=100)
    unit = models.PositiveIntegerField()

serializers.py

class CustomUserSerializer(serializers.ModelSerializer):
    class Meta:
        model = CustomUser
        fields = ('first_name',
                  'last_name',
                  'identity_no',
                  'email')

    def create(self, validated_data):
        return CustomUser.objects.create(**validated_data)

class ProfessorDetailSerializer(serializers.ModelSerializer):
    user = CustomUserSerializer()
    class Meta:
        model = Professor
        fields = (
            'user',
            'professor_no'
        )

    def create(self, validated_data):
        return CustomUser.objects.create(**validated_data)

class CourseDetailSerializer(serializers.ModelSerializer):
    professor =ProfessorDetailSerializer(many=True)

    class Meta:
        model = Course
        fields = (
            'professor',
            'name',
            'unit',
        )

view.py

class CourseDetailView(DestroyModelMixin, UpdateModelMixin, RetrieveAPIView):
    queryset = Course.objects.all()
    serializer_class = CourseDetailSerializer
    permission_classes = [IsAuthenticatedOrReadOnly]


    def put(self, request, *args, **kwargs):
        return self.update(request, *args, **kwargs)

    def delete(self, request, *args, **kwargs):
        return self.destroy(request, *args, **kwargs)

0 个答案:

没有答案