首页 > 解决方案 > Django REST:POST 请求问题,必填字段

问题描述

我遇到了 POST 请求的问题。“员工”字段是必需的,但我在视图中初始化它(我将其设置为 request.user),而不是在请求参数中。但是我仍然收到以下错误:

data:
    employee: ["This field is required."]

看法

class EmployeeQuestionView(viewsets.ModelViewSet):
    queryset = EmployeeQuestion.objects.all()
    serializer_class = EmployeeQuestionSerializer

    def perform_create(self, serializer):
        serializer.save(employee=self.request.user)

串行器

class EmployeeQuestionSerializer(serializers.ModelSerializer):
    class Meta:
        model = EmployeeQuestion
        fields = (
            'id',
            'employee',
            'question',
            'attempted',
            'passed',
        )

任何想法为什么?

标签: djangopostdjango-rest-framework

解决方案


使用 read_only 在验证中忽略员工

class EmployeeQuestionSerializer(serializers.ModelSerializer):
    employee = serializers.SerializerMethodField(read_only=True)
    class Meta:
        model = EmployeeQuestion
        fields = (
            'id',
            'employee',
            'question',
            'attempted',
            'passed',
        )
    @staticmethod
    def get_employee(obj):
        return obj.employee

推荐阅读