首页 > 解决方案 > 参数必须是 django rest 框架中的字符串?

问题描述

看这个我的过滤 请给我这个的解决方案,为什么这会显示这种类型的错误?

def create(self,request):
    serializer = self.get_serializer(data=request.data)
    if serializer.is_valid():
        data = serializer.data

        sub = data['subject_id']
        sub_id = Subject.objects.filter(id=sub)

        sec = data['section_id']
        sec_id = Section.objects.filter(id=sec)

        teacher  = data['teacher_id']
        teacher_id = Teacher.objects.filter(id=teacher)

        if sub_id and sec_id and teacher_id:
            TeacherSection.objects.get_or_create(section_id = sec_id.first(),
                                                defaults={
                                                'subject_id':sub_id.first(),
                                                'teacher_id':teacher_id.first()
                                                })
            return Response(data)
        else:
            raise serializers.ValidationError({
                'Detail':['Either Section Or Teacher Or Subject Not Exist']
                })
    else:
        raise serializers.ValidationError({
            'Detail':[serializer.errors]
            })

错误是这样的。你能解释一下这是什么类型的错误吗

return int(value) TypeError: int() argument must be a string, a bytes-like object or a number, not 'Subject'

标签: pythondjango

解决方案


期望类似subject_id整数的对象。但是您正在传递sub_id.first()which 是一个Subject实例。

所以应该是

sub_id.first().id


我认为这种情况也适用于teacher_id. (这取决于您如何定义模型)


推荐阅读