Когда я пытаюсь отправить pk2
или любой другой аргумент, он вызывает AssertionError
.
Я имею в виду, что URL
path('grade/<str:pk>/', IndividualGrade.as_view(), name="get-grade")
не выдает ошибку, в то время как приведенная ниже вызывает ошибку:
path('grade/<str:pk2>/', IndividualGrade.as_view(), name="get-grade")
Мой взгляд довольно прост, как показано ниже:
class IndividualGrade(generics.RetrieveUpdateDestroyAPIView):
''' PUT/GET/DELETE grade/{grade:pk}/ '''
queryset = Grade.objects.all()
serializer_class = GradeSerializer
def put(self, request, *args, **kwargs):
try:
g1 = Grade.objects.get(grade=kwargs["pk"])
serializer = GradeSerializer(g1, data=request.data)
flag = 0
except Grade.DoesNotExist: # Create a new grade if a grade doesn't exist
g1 = Grade.objects.get(grade=kwargs["pk"])
serializer = GradeSerializer(g1, data=request.data)
flag = 1
if serializer.is_valid():
# call update/create here
else:
return Response(serializer.errors)
return Response(serializer.data, status=status.HTTP_200_OK)
Я понял, pk2
в URL работает, если я напишу свою собственную функцию get (пробовал в другом представлении), но я не знаю, как это исправить, не написав свою собственную get. Пока это обсуждалось здесь . Но я все еще не уверен, как это исправить, не написав свой собственный get.