gpt4 book ai didi

python - 如何将参数传递给 Django 表单?

转载 作者:行者123 更新时间:2023-12-02 02:08:08 25 4
gpt4 key购买 nike

我想根据选择的用户过滤表单字段查询集。因此,我想将用户作为参数传递给表单,以便在表单的 __init__ 方法中过滤字段查询集。当我将任何参数传递给表单时,出现以下错误。

class UserDetailView(LoginRequiredMixin, FormMixin, DetailView):
model = TbUser
form_class = TbPeopleEntranceRightForm

def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
form = TbPeopleEntranceRightForm(user=self.object)
context['form'] = form
return context

__init__() got an unexpected keyword argument 'user'

如何正确传递参数,以及如何在 __init__ 表单方法中获取它?

更新:


class TbPeopleEntranceRightForm(forms.ModelForm):

def __init__(self, user, **kwargs):
super().__init__(**kwargs)
print(user)
# Use `self.user` here or in some other methods.

__init__() missing 1 required positional argument: 'user'

最佳答案

不要在 get_context_data 中这样做,它是为别的东西做的。
使用 get_form_kwargs 代替:

class UserDetailView(LoginRequiredMixin, FormMixin, DetailView):
model = TbUser
form_class = TbPeopleEntranceRightForm

def get_form_kwargs(self):
kwargs = super().get_form_kwargs()
kwargs["user"] = self.object
return kwargs

在您的 forms.py 中:

def __init__(self, user=None, *args, **kwargs):
self.user = user
super().__init__(*args, **kwargs)

关于python - 如何将参数传递给 Django 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68095056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com