我在下面有一段代码(属于 Django 管理 View ,稍作修改)。我的 IDE (PyCharm) 在最后一行警告我 Local variable 'ModelForm' might be referenced before assignment
。
我不知道这是怎么发生的,但是当我注释掉第 6 行时:
with transaction.commit_manually():
然后警告消失。
是我遗漏了什么,还是 PyCharm 遗漏了什么?
这是代码块。我将其精简为几行,但它仍然发出警告。原始代码块在这里(70 行):http://pastebin.com/4UT9hRPb
ModelForm = self.get_form(request, obj, form=form)
formsets = []
if request.method == 'POST':
# commit only when all forms are valid
with transaction.commit_manually():
try:
objects = queryset.all()
transaction.commit()
return self.response_change(request, new_object)
finally:
general_error = unicode(sys.exc_info()[1])
transaction.rollback()
form = ModelForm()
最佳答案
似乎这个警告不应该发生,至少我不明白为什么,也许 PyCharm 在确定 with
块的范围时有问题。但是您可以通过移动 ModelForm
块中的 with
赋值来消除这个警告。
关于python - 这个变量真的可以是 "referenced before assignment",我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13209243/