我有一个存储在变量中的对象列表。每个对象都有两个属性:temp_name
和temp_body
。现在,我想迭代对象列表,看看用户给出的名称是否已存在于temp_name
中的任何对象中。我试过这样做:
temp_name = request.POST.get('temp_name')
templates = EmailTemplate.objects.all()
for template in templates:
if template.temp_name == temp_name:
data = {'status': 'exists'}
return JsonResponse(data)
else:
data = {'status': 'exist_not'}
return JsonResponse(data)
但这只适用于列表中的第一项,它从第二项开始就不会起作用。我如何使这个工作?
答案 0 :(得分:0)
代码过早返回。您需要将else
部分移出循环以迭代所有模板:
for template in templates:
if template.temp_name == temp_name:
data = {'status': 'exists'}
return JsonResponse(data)
data = {'status': 'exist_not'}
return JsonResponse(data)
顺便说一句,你不需要使用循环。使用QuerySet.filter
检查是否存在匹配的模板:
temp_name = request.POST.get('temp_name')
exists = EmailTemplate.objects.filter(temp_name=temp_name).exists()
data = {'status': 'exists' if exists else 'exist_not'}
return JsonResponse(data)