Django 中的多对多关系?
ManytoMany relation in Django?
我有两个模型
class Group(models.Model):
....
和
class User(models.Model):
...
group = models.ManyToManyField(
Group)
具有多对多关系。
如果这个 Group
有一些 Users
,防止删除 Group
实例的最佳方法是什么
我的解决方案是:
def delete(self, request, *args, **kwargs):
try:
list_ = []
for user in User.objects.all():
for group in user.group.all():
if group.name not in list_:
list_.append(group.name)
else:
continue
if Group.objects.get(pk=kwargs['pk']).name in list_:
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
else:
return self.destroy(request, *args, **kwargs)
except:
raise ValueError("Error")
您可以检查 Group
是否至少有一个用户:
def delete(self, request, *args, **kwargs):
items, __ = Group.objects.filter(pk=selk.kwargs['pk']<strong>, user=None</strong>).delete()
if items:
return Response(status=status.HTTP_200_OK)
else:
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
这将过滤并仅重新训练 Group
个空的。如果 n
因此是 0
那么它将采用 else
的情况,并且 return 是 405。如果 n
大于零(在这种特定情况下它永远是一个),然后它将删除该 Group
记录和 return HTTP 200 响应。
我有两个模型
class Group(models.Model):
....
和
class User(models.Model):
...
group = models.ManyToManyField(
Group)
具有多对多关系。
如果这个 Group
Users
,防止删除 Group
实例的最佳方法是什么
我的解决方案是:
def delete(self, request, *args, **kwargs):
try:
list_ = []
for user in User.objects.all():
for group in user.group.all():
if group.name not in list_:
list_.append(group.name)
else:
continue
if Group.objects.get(pk=kwargs['pk']).name in list_:
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
else:
return self.destroy(request, *args, **kwargs)
except:
raise ValueError("Error")
您可以检查 Group
是否至少有一个用户:
def delete(self, request, *args, **kwargs):
items, __ = Group.objects.filter(pk=selk.kwargs['pk']<strong>, user=None</strong>).delete()
if items:
return Response(status=status.HTTP_200_OK)
else:
return Response(status=status.HTTP_405_METHOD_NOT_ALLOWED)
这将过滤并仅重新训练 Group
个空的。如果 n
因此是 0
那么它将采用 else
的情况,并且 return 是 405。如果 n
大于零(在这种特定情况下它永远是一个),然后它将删除该 Group
记录和 return HTTP 200 响应。