Skip to main content
 首页 » 编程设计

python之如何在 Django 中生成自定义表单

2025年05月04日30qlqwjy

在我的 Django 应用程序的模板页面之一中,该页面要求用户从复选框列表中选择他想要的选项。

问题是,不同的用户有不同的选择(例如,根据他们过去的兴趣,有不同的选择)。

如何使用 CheckboxSelectMultiple() 字段生成 Django 表单,为每个用户生成自定义选项?

请您参考如下方法:

在 forms.py 中,您需要覆盖 __init__ 方法,并在那里设置调用表单类时从 View 传递的选项。

这是一个例子:

class UserOptionsForm(forms.Form): 
    user_personal_options = forms.ChoiceField(choices=(), 
                                              widget=forms.CheckboxSelectMultiple) 
 
    def __init__(self, *args, **kwargs): 
        choices = kwargs.pop('choices', None) # return the choices or None 
        super(UserOptionsForm, self).__init__(*args, **kwargs) 
        if choices is not None: 
            self.fields['user_personal_options'].choices = choices 

所以在你看来:

def user_options(request, user_id): 
    if request.method == 'POST': 
        form = UserOptionsForm(request.POST) 
            if form.is_valid(): 
                # proccess form data here 
                form.save() 
    else: 
        # render the form with user personal choices 
        user_choices = [] # do shometing here to make the choices dict by user_id 
        form = UserOptionsForm(choices=user_choices)