mas*_*don 1 python django django-forms kwargs
我试图将另一个参数传递给我的表单,这是一个与ForeignKey关系的对象.但是,__init__() got an unexpected keyword argument 'parent'当我非常确定可以向表单发送其他参数时__init__(即这里:简单形式不验证),dunno为什么会返回表单.我错了吗 ?
def add_video(request):
parent = ParentObject.objects.all()[0]
if request.method == 'POST':
form = VideoForm(data=request.POST, parent=parent)
if form.is_valid():
form.save()
next = reverse('manage_playforward',)
return HttpResponseRedirect(next)
else:
form = VideoForm()
class VideoForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
try:
self.parent = kwargs.pop['parent']
logging.debug(self.parent)
except:
pass
super(VideoForm, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
kwargs.pop['parent']扔TypeError: 'builtin_function_or_method' object is unsubscriptable,因为你试图在函数方法({}.pop)上进行键查找.然后,您的异常处理程序会吞下此错误.
为此工作呢kwargs.pop('parent', None).在你的情况下:
class VideoForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
self.parent = kwargs.pop('parent', None)
super(VideoForm, self).__init__(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
作为附注,99%的时间最好只捕获你的except块中的特定异常.这样做有助于避免这样的错误/混乱.另外,我强烈建议为这个自定义构造添加单元测试(或者只是TDDing你的其他代码,但这是一个单独的问题)
| 归档时间: |
|
| 查看次数: |
219 次 |
| 最近记录: |