django не может создать модель с достаточным количеством данных

#django #django-rest-framework

Вопрос:

models.py

 class QuestionReply(models.Model):
    reply_user = models.ForeignKey(cUser, on_delete=models.CASCADE)
    reply_question = models.ForeignKey(Question, on_delete=models.CASCADE)
    reply = models.TextField()

    votes = models.IntegerField(default=0)

    created_at = models.DateTimeField(auto_now_add=True)
 

views.py

 class AddQuestionReply(APIView):
    def post(self, request, id):
        try:
            reply = request.data.get('reply')
            reply_user = request.data.get('reply_user')

            reply_to_question = models.QuestionReply(reply_user=reply_user, reply_question=id, reply=reply)
            reply_to_question.save()

            return Response({'OK': 'Reply added'}, status=status.HTTP_200_OK)
        except:
            return Response({'400': f'QuestionReply has invalid data'}, status=status.HTTP_400_BAD_REQUEST)
 

urls.py

 path('questions/question-reply/add/<int:id>', views.AddQuestionReply.as_view(), name='add-question-reply')
 

отправленные данные

 {
    "reply_user": "1",
    "reply": "Hello, world"
}
 

У меня есть модель с 2 внешними ключами, текстовым полем и 2 полями по умолчанию, я отправил необходимые данные по URL-адресу(запрос ответа исходит из URL-адреса), но по какой-то причине модель не создается и возникает ошибка.

Комментарии:

1. Пожалуйста, поделитесь полной обратной связью.

Ответ №1:

Поскольку id и reply_user оба ForeignKey являются s, вы должны работать с reply_user_id reply_question_id первичными ключами соответствующих объектов и указывать их, поэтому:

 reply_to_question = QuestionReply.objects.create(
    reply_user_id=reply_user,
    reply_question_id=id,
    reply=reply
)