从values_list中删除类型



想要从查询集中删除保护。

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卫兵]

相关内容

  • 没有找到相关文章

最新更新