我下面有一段代码(属于Django管理员视图,略有修改)。我的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()
答案 0 :(得分:0)
似乎这个警告不应该发生,至少我不明白为什么,也许PyCharm在查明with
区块的范围时有问题。但是,您可以通过移动ModelForm
块中的with
作业来消除此警告。