如何迭代对象属性并检查python中的重复?

时间:2017-04-08 02:01:45

标签: python django

我有一个存储在变量中的对象列表。每个对象都有两个属性:temp_nametemp_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)

但这只适用于列表中的第一项,它从第二项开始就不会起作用。我如何使这个工作?

1 个答案:

答案 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)