楷模:
class Region(models.Model):
name = models.CharField(max_length=255)
code = models.IntegerField()
class District(models.Model):
region = models.ForeignKey('Region', related_name='districts', on_delete=models.PROTECT)
name = models.CharField(max_length=255)
code = models.IntegerField()
意见:
class RegionDelete(generics.DestroyAPIView):
queryset = Region.objects.all()
serializer_class = RegionSerializer
HTTP 代码 423 或其他。
错误详情。
Django 异常
混合:
class DestroyModelMixin(object):
"""
Destroy a model instance.
"""
def destroy(self, request, *args, **kwargs):
instance = self.get_object()
try:
self.perform_destroy(instance)
except django.db.models.deletion.ProtectedError as e:
return Response(status=status.HTTP_423_LOCKED, data={'detail':str(e)})
return Response(status=status.HTTP_204_NO_CONTENT)
def perform_destroy(self, instance):
instance.delete()
您需要编写一个自定义方法来处理这种情况。 我认为这不足以保证为标准案例增加额外的复杂性。
只需几行代码即可解决此问题。 框架应该让生活更轻松,所以我认为应该添加模型删除的自动异常处理。
老问题,但仍然如此相关。
从我的角度来看,它很常见,并且是保持数据库完整性的关键部分。
也遇到了这个。 在没有 500 错误的情况下默认处理这个会非常好。
最有用的评论
只需几行代码即可解决此问题。 框架应该让生活更轻松,所以我认为应该添加模型删除的自动异常处理。