1

フォームに追加のパラメーターを渡そうとしていました。これは、Object から ForeignKey への関係です。__init__() got an unexpected keyword argument 'parent'しかし、フォームに追加のパラメーターを送信できると確信しているのに、フォームが返される理由はわかりません__init__(つまり、ここでは単純なフォームが検証されていません)。私が間違っている ?

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)
4

1 に答える 1

6

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)

補足として、99% の場合、except ブロックで特定の例外のみをキャッチするのが最善です。そうすることで、このようなバグや混乱を回避するのに役立ちます。また、このカスタム構成に単体テストを追加することを強くお勧めします (または、他のコードを TDD するだけですが、それは別の問題です)。

于 2010-10-25T23:53:17.750 に答える