【发布时间】:2012-11-03 12:36:29
【问题描述】:
我在下面有一段代码(属于 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()
【问题讨论】:
-
而
transaction就是这样被导入的? -
PyCharm 在哪里抱怨?在代码的末尾还是在您执行
form = ModelForm(...)时?无论如何,我认为这是 PyCharm 中的一个错误。 -
@Lattyware 事务使用
from django.db import transaction导入。当然,原来还有更多的代码可以证明交易的使用是合理的...... -
@Bakuriu 在
form = ModelForm()那里 -
我自己无法在 Pycharm 中重现这种行为。可以给个文件测试一下吗?
标签: python django transactions django-admin