我想将views.py中的参数传递给forms.py中的formset Django? 我的设置:Django 2.0.7,Python 3.6.5
感谢您的帮助。
答案 0 :(得分:0)
您可以通过重写基于类的视图中的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。