【问题标题】:How to pass parameter from views to formset Django如何将参数从视图传递到表单集 Django
【发布时间】:2019-01-21 22:05:07
【问题描述】:

我想将参数从 views.py 传递到 forms.py Django 中的表单集? 我的设置:Django 2.0.7、Python 3.6.5

谢谢你帮助我。

【问题讨论】:

    标签: django django-forms django-views


    【解决方案1】:

    您可以通过覆盖基于类的视图中的get_form_kwargs 方法来实现。 Here是文档中的一个小描述,here你可以找到源代码。

    get_form_kwargs 所做的是将关键字参数字典以表单形式传递给__init__。所以你必须在两个地方改变你的代码——views.py 和 forms.py。

    例子:

    views.py

    class CreatePost(generic.CreateView):
        # SOMETHING HERE
    
        def get_from_kwargs(self):
            kwargs = super().get_form_kwargs()
            kwargs.update({"user", self.request.user})
            return kwargs
    

    forms.py

    class PostForm(forms.ModelForm):
        # SOMETHING HERE
    
        def __init__(self, *args, **kwargs):
            user = kwargs.pop("user", None)
            super().__init__(*args, **kwargs)
            if user is not None:
                self.fields["group"].queryset = models.Group.object.filter(members = user)
    

    我在上面的代码中所做的是将用户从视图传递到表单,然后获取用户所属组的查询集(在组模型中有成员 ManyToManyField)。

    有人还发布了另一个例子here。

    【讨论】:

      猜你喜欢
      • 2020-06-09
      • 2019-08-25
      • 2022-01-15
      • 1970-01-01
      • 1970-01-01
      • 2019-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多