Как написать функцию create() в сериализаторе DRF для модели с полем "многие ко многим", передавая данные через axios и vue

У меня есть vue на фронтенде и я использую axios для отправки пользовательского ввода в api. У меня есть модель класса и модель студента. В модели студента у меня есть поле "classes" как поле "многие ко многим". Пользователи смогут вводить все поля, кроме class.id в форме (поскольку class.id можно получить с помощью $router.params). Я хочу создать экземпляр Student и добавить этот экземпляр класса под названием clss к его отношению. student.classes.add(clss). Как я должен реализовать create() в классе serielizer? Я попытался придумать следующее, но, похоже, это не работает.

class StudentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Student
        fields = (
            "id", 
            "classes",
            "studentID",
            "lastName", 
            "firstName",
            "gender",
            "dob", 
            "ssn",
            "tel",
            "address",
            "email",
            "userName",
            "acctPass",
            "note"
        )

    def create(self, validated_data):
        clss = self.request.query_params['class_id']
        student = Student.objects.create(**validated_data)

        student.classes.add(clss)
        student.save()
        return student

В AddStudent Vue у меня есть следующее:

xport default {
    name: 'AddStudent',
    data(){
        return {
            clss:{},
            student:{}
        }
    },
    async mounted(){
        await this.getClass()
    },
    methods:{
        getClass(){
            const classID = this.$route.params.id
            axios
                .get(`/api/v1/classes/${classID}`)
                .then(response => {
                    this.clss = response.data
                })
                .catch(error => {
                    console.log(JSON.stringify(error))
                })
        },

        submitForm(){
            const classID = this.$route.params.id
            axios
                .post("/api/v1/students/", this.student, 
                    {params: 
                        {class_id: classID,
                        }
                    }
                )
                .then(response => {
                    // redirect
                    this.$router.push({name:Class, params: { id: classID}})
                })
                .catch(error => {
                    console.log(JSON.stringify(error))
                })
        }
    }

}
</script>

Мой набор представлений выглядит следующим образом:

class StudentViewSet(viewsets.ModelViewSet):
    serializer_class = StudentSerializer
    queryset = Student.objects.all()

    def get_queryset(self):
        clssID = self.request.query_params['class_id']
        print(clssID)
        clss = Class.objects.get(pk=clssID)
        return self.queryset.filter(classes=clss)

попробуйте это

def create(self, validated_data):
    return Student.objects.create(**validated_data)
Вернуться на верх