Удалить тип из списка значений
Желание удалить охранника из набора запросов.
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')]>
Что делать?
Вы можете использовать cast и textfield в django для решения этой проблемы или простой цикл for. Попробуйте использовать этот cast, импортировав его в свой проект.
from django.db.models import TextField
from django.db.models.functions import Cast
внутри вашего цикла queryset for loop попробуйте следующий подход
guards = guards.objects.annotate(str_id=Cast('id',
output_field=TextField())).values_list('str_id', flat=True)
Надеюсь, это может помочь. Или вы также можете попробовать простой цикл for
guards = [str(g) for g in guards]