[英]How can I get a comment that corresponds to a post in django rest framework?
[英]I can not send a post to django rest framework
我創建了一個序列化器來發布結果,但是當我嘗試使用郵遞員時,它說值'enrollment_id'為null:
views.py
from rest_framework import generics
from .serializers import ResponseSerializer
class ResponseCreate(generics.CreateAPIView):
serializer_class = ResponseSerializer
serializers.py
class ResponseSerializer(serializers.ModelSerializer):
class Meta:
model = Response
fields = (
'enrollment_id',
'evaluation_id',
'question_id',
'question_component_id',
'user_id',
)
urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.ResponseCreate.as_view()),
]
在郵遞員的郵件正文中,我發送以下json:
{
"enrollment_id": 1,
"user_id": 2,
"question_component_id": 2,
"question_id": 1,
"evaluation_id": 1
}
錯誤郵遞員:
IntegrityError at /response/
null value in column "enrollment_id" violates not-null constraint
DETAIL: Failing row contains (9, null, null, null, null, null).
視圖
編輯:
模型回應:
class Response(models.Model):
user = models.ForeignKey(
User,
on_delete=models.CASCADE,
)
enrollment = models.ForeignKey(
Enrollment,
on_delete=models.CASCADE,
)
evaluation = models.ForeignKey(
Evaluation,
on_delete=models.CASCADE,
)
question = models.ForeignKey(
Question,
on_delete=models.CASCADE,
)
question_component = models.ForeignKey(
Question_Component,
on_delete=models.CASCADE,
)
您必須在網址格式中指明將允許使用的方法:
urlpatterns = [
path('', views.ResponseCreate.as_view({'get': 'list'})),
]
我可以在錯誤中看到您得到不允許使用`GET方法,這是因為您沒有指示Django允許它。
試試這個視圖:
from rest_framework import viewsets
from .serializers import ResponseSerializer
class ResponseCreate(viewsets.ModelViewSet):
queryset = models.Response.objects.all()
serializer_class = serializers.ResponseSerializer
ModelViewSet已經對al方法具有正確的響應,但是您必須在url模式中指出允許哪些方法。
編輯:您的序列化器無需在“模型”字段后添加“ _id”。 應該是這樣的:
class ResponseSerializer(serializers.ModelSerializer):
class Meta:
model = Response
fields = (
'enrollment',
'evaluation',
'question',
'question_component',
'user',
)
現在,嘗試通過郵遞員對修改后的JSON進行編輯:
{
"enrollment": 1,
"user": 2,
"question_component": 2,
"question": 1,
"evaluation": 1
}
您需要定義一個queryset
在您的看法:
class ResponseCreate(generics.CreateAPIView):
queryset = Response.objects.all()
serializer_class = ResponseSerializer
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.