检查是否存在特定对象

2024-09-29 23:28:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在检查某个id是否存在。我正在用一种干净的方法检查它。你知道吗

当我键入一个“正确的”(exists)号码时,它告诉我'int' object is not subscriptable

当我键入一个错误的(不存在的)号码时,它告诉我local variable 'result' referenced before assignment

原因是我不能检查一个id(从数据库)?你知道吗

我的代码:

class IDForm(forms.Form):
    ID = forms.IntegerField(required=True)

    def clean(self):
        id = self.cleaned_data['ID']
        try:
            result = pmod.RentalInventory.objects.get(id=id)
        except result.DoesNotExist:
            raise forms.ValidationError("Invalid Number")
        return self.cleaned_data['ID']

我做了一些更改:现在当我键入正确的数字时,它将通过。当我输入错误的号码时,它会显示RentalInventory matching query does not exist。你知道吗

def clean_email(self):
    result = pmod.RentalInventory.objects.filter(email=self.cleaned_data['ID'])
    if result.count() < 1:
        raise forms.ValidationError("Invalid number")
    return self.cleaned_data['ID']

Tags: selfcleaniddata键入def错误not
1条回答
网友
1楼 · 发布于 2024-09-29 23:28:55
  1. clean方法应该always返回清理数据的完整集合。你知道吗
  2. 当number对象在try节中不存在时,result未设置,因此不能在exception节中使用它。你知道吗

因此,请将代码更改为:

from django.core.exceptions import ObjectDoesNotExist

class IDForm(forms.Form):
    ID = forms.IntegerField(required=True)
    def clean(self):
        id = self.cleaned_data['ID']
        try:
            result = pmod.RentalInventory.objects.get(id=id)
        except ObjectDoesNotExist:
            raise forms.ValidationError("Invalid Number")

        return self.cleaned_data

相关问题 更多 >

    热门问题