Поле почтового запроса Django всегда null
Мой запрос post из React frontend в Django backend не работает, и я не уверен почему. Он всегда говорит, что "question" является null. Я знаю, что в базе данных уже есть вопрос с первичным ключом id 19.
Quiz.js:
const createAnswerSubmission = () => {
submit(questionIndex);
const data = {
"question": quiz.question[questionIndex].id,
"answer_choice": answerSelected[questionIndex],
"user": window.localStorage.getItem("user")
}
const url = "http://localhost:8000/api/submittedanswer/";
axios.post(url, data, {headers: {
Authorization: `Token ${window.localStorage.getItem('auth_token')}`,
Accept: "application/json",
'Content-Type': 'application/json',
}
}).then(function (response) {
console.log(data)
})
.catch(function (error) {
console.log(data);
alert(error);
});
}
Журнал консоли показывает следующее:
{question: 19, answer_choice: 4, user: '1'}
А полезная нагрузка запроса показывает:
{question: 19, answer_choice: 4, user: "1"}
Однако я получаю некоторую ошибку:
IntegrityError at /api/submittedanswer/ нулевое значение в столбце "question_id" отношения "api_submittedanswer" нарушает ограничение not-null ПОДРОБНАЯ ИНФОРМАЦИЯ: Неудачная строка содержит (123, 4, null, 1).
models.py:
//...
class Question(models.Model):
pt = models.ForeignKey(PT, on_delete=models.CASCADE, null=True, blank=True, related_name = 'pt')
section = models.ForeignKey(Section, on_delete=models.CASCADE, null=True, blank=True, related_name = 'section')
question_type = models.CharField(max_length=20)
number = models.IntegerField()
stimulus = models.CharField(max_length = 1000)
question = models.CharField(max_length = 400)
answer = models.ManyToManyField(AnswerChoice)
correct_answer = models.IntegerField(default = 0)
def __str__(self):
return "PT " + str(self.pt) + " Section " + str(self.section) + " Question " + str(self.number)
class SubmittedAnswer(models.Model):
user = models.ForeignKey(CustomUser, on_delete=models.CASCADE)
question = models.ForeignKey(Question, on_delete=models.CASCADE)
answer_choice = models.IntegerField()
serializers.py:
class QuestionSerializer(ModelSerializer):
answerChoice = serializers.PrimaryKeyRelatedField(many=True, read_only=True)
class Meta:
model = Question
fields = '__all__'
class SubmittedAnswerSerializer(ModelSerializer):
class Meta:
model = SubmittedAnswer
fields = '__all__'
depth = 1