Аргумент должен быть строкой в ​​структуре отдыха django?

Посмотрите эту мою фильтрацию И, пожалуйста, дайте мне решение этой проблемы и почему это показывает этот тип ошибки?

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 (значение) TypeError: аргумент int () должен быть строкой, байтовым объектом или числом, а не Subject

вы передаете саму модель, вместо этого вы должны передать id

uedemir 10.09.2018 09:27
2
1
93
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

subject_id ожидает целочисленный объект. Но вы передаете sub_id.first(), который является экземпляром Subject. Так и должно быть

sub_id.first().id


Думаю, этот сценарий применим и для teacher_id. (что зависит от того, как вы определили модели)

Как это сделать, я не знаю, что я новичок в stackOverFlow

user10086707 10.09.2018 12:20

@DineshKc Чтобы пометить ответ как принятый, нажмите на галочку рядом с ответом, чтобы переключить его с серого на заполненный. Ссылка

JPG 10.09.2018 12:27

Другие вопросы по теме