想要从查询集中删除保护。
Guard是表InstituteGate中的一个多对多字段
def delete(self, request):
institute = self.request.query_params.get("institute", None)
data = request.data
queryset = InstituteGate.objects.filter(
institute=institute, name=data["gate"])
for i in queryset:
guards = i.guards.all().values_list('id', flat=True,)
print(guards)
if data["guard"] in guards:
i.guards.remove(data["guard"])
return Response("Succesfully Removed Guard From gate", status=status.HTTP_200_OK)
印刷护套
<QuerySet [UUID('dfca4bbf-e823-4888-af6b-7fc6438c697e'), UUID('62663459a-ff71-4f5e-86c6-36405b611859'), UUID('sd52sds-2825-43ac-91b2-3cccae48b4ab'), UUID('adadss55d-4a7d-4e31-850b-f5a55beb75ce')]>
但是我需要
<QuerySet [('dfca4bbf-e823-4888-af6b-7fc6438c697e'), ('62663459a-ff71-4f5e-86c6-36405b611859'), ('sd52sds-2825-43ac-91b2-3cccae48b4ab'), ('adadss55d-4a7d-4e31-850b-f5a55beb75ce')]>
该怎么办??
你可以在django中使用cast和textfield来克服这个问题,或者简单的for循环。通过在项目中导入来尝试此强制转换。
from django.db.models import TextField
from django.db.models.functions import Cast
在你的查询集for循环中试试这个方法
guards = guards.objects.annotate(str_id=Cast('id',
output_field=TextField())).values_list('str_id', flat=True)
希望这可能会有所帮助或者你也可以尝试简单的for loop
卫兵= [str(g) for g in卫兵]