我正在构建一个具有多对多关系的小型应用程序,名为“river_rapid”。我可以在前端的河道详情视图中看到快速卡片,但不确定我是否正确“获取”了它们。我最终试图删除关系(从河流详细信息中删除快速卡而不完全删除快速卡),并且之前一直遇到“未绑定本地”错误(因此注释掉代码)。
在尝试了几种方法来解决该错误后,我现在收到以下错误:
randrapi.models.rapid.Rapid.DoesNotExist: Rapid matching query does not exist.
[05/Mar/2023 22:02:15] "DELETE /rapids/11 HTTP/1.1" 500 98330
这是我的 river_rapid 视图和模型:
from django.http import HttpResponseServerError
from rest_framework.viewsets import ViewSet
from rest_framework.response import Response
from rest_framework import serializers, status
from randrapi.models import River_Rapid, River, Rapid
class RiverRapidView(ViewSet):
def retrieve(self, request, pk):
river_rapid = River_Rapid.objects.get(pk=pk)
# river = River.objects.get(pk=pk)
serializer = RiverRapidSerializer(river_rapid)
print('retrieve')
return Response(serializer.data)
def list(self, request):
# river = River.objects.all()
# print(river)
river_rapids = River_Rapid.objects.all()
# print(river_rapids)
# new_river_rapids = river_rapids.filter(river_id = river)
# new_river_rapids = River_Rapid.objects.all()
# new_river_rapids = request.query_params.get = ('river_rapids', None)
# if new_river_rapids is not None:
# new_river_rapids = river_rapids.filter(river_id = river)
# print(new_river_rapids)
# if new_river_rapids is not None:
# river = river.filter(river = river)
# global new_river_rapids
river = request.query_params.get('river', None)
new_river_rapids = river_rapids.filter(river_id = river)
if river is not None:
# new_river_rapids = river_rapids.filter(river_id = river)
print(new_river_rapids)
serializer = RiverRapidSerializer(new_river_rapids, many = True)
return Response(serializer.data)
def create(self, request):
river = River.objects.get(pk=request.data["river"])
rapid = Rapid.objects.get(pk=request.data["rapid"])
river_rapid = River_Rapid.objects.create(
river = river,
rapid = rapid
)
serializer = RiverRapidSerializer(river_rapid)
return Response(serializer.data)
def update(self, request, pk):
river_rapid = River_Rapid.objects.get(pk=pk)
river = River.objects.get(pk=request.data["river"])
rapid = Rapid.objects.get(pk=request.data["rapid"])
river_rapid.river = river
river_rapid.rapid = rapid
river_rapid.save()
return Response(None, status=status.HTTP_204_NO_CONTENT)
def destroy(self, request, pk):
river_rapid = River_Rapid.objects.get(pk=pk)
river_rapid.delete()
return Response(None, status=status.HTTP_204_NO_CONTENT)
class RiverRapidSerializer(serializers.ModelSerializer):
class Meta:
model = River_Rapid
fields = ('river', 'rapid', 'id')
depth = 1
from django.db import models
from .river import River
from .rapid import Rapid
class River_Rapid(models.Model):
river = models.ForeignKey(River, on_delete=models.CASCADE)
rapid = models.ForeignKey(Rapid, on_delete=models.CASCADE)
def __str__(self):
return self.name
我已经尝试专门针对 river_rapid,我检查了我的 views/river_rapid 文件中的 destroy 和 list 方法以查看我丢失了什么,并收到 500 错误。