这个变量真的可以“在分配前引用”

时间:2012-11-03 12:36:29

标签: python django transactions django-admin

我下面有一段代码(属于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()

1 个答案:

答案 0 :(得分:0)

似乎这个警告不应该发生,至少我不明白为什么,也许PyCharm在查明with区块的范围时有问题。但是,您可以通过移动ModelForm块中的with作业来消除此警告。