Django:如何在CreateView中使用get_form()方法?

时间:2018-03-10 22:43:21

标签: python django

我的forms.py中有一个CustomForm需要URL的公钥。我是说,例如/book/<pk>/create

在我的views.py中有这个CreateView:

class CustomCreateView(CreateView):
    form_class = CustomForm

现在我的问题是我如何将URL的公钥传递给CustomForm。 CustomForm需要一个名为pk的关键字参数。

我认为get_form()方法可以提供帮助,但我不确定并且不知道如何使用它:

https://docs.djangoproject.com/en/2.0/ref/class-based-views/mixins-editing/#django.views.generic.edit.FormMixin.get_form

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

在您看来

class CustomCreateView(CreateView):
    form_class = CustomForm
    def get_form_kwargs(self, *args, **kwargs):
        kwargs = super(CustomCreateView, self).get_form_kwargs(*args, **kwargs)
        kwargs['pk'] = self.kwargs['pk']
        return kwargs

以自定义形式:

 def __init__(self, *args, **kwargs):
    self.pk = kwargs.pop('pk', None)
    super(CustomForm, self).__init__(*args, **kwargs)