Rob*_*ith 6 django dynamic choicefield
我有一个choiceField用于创建带有一些选项的选择字段.像这样的东西:
forms.py
class NewForm(forms.Form):
title = forms.CharField(max_length=69)
parent = forms.ChoiceField(choices = CHOICE)
Run Code Online (Sandbox Code Playgroud)
但是我希望能够在没有预定义元组的情况下创建选项(这是必需的ChoiceField).基本上,我需要访问request.user来根据每个用户填写一些选项标签,但我不知道是否有任何方法可以在forms.Form类中使用请求.
另一种方法是预填充NewFormvia 的实例:
views.py
form = NewForm(initial={'choices': my_actual_choices})
Run Code Online (Sandbox Code Playgroud)
但我必须添加一个虚拟选择来创建NewForm,my_actual_choices似乎无论如何都不起作用.
我认为解决这个问题的第三种方法是创建ChoiceField的子类并重新定义,save()但我不知道如何去做.
你可以通过覆盖init来动态填充它们,基本上代码看起来像:
class NewForm(forms.Form):
def __init__(self, choices, *args, **kwargs):
super(NewForm, self).__init__(*args, **kwargs)
self.fields["choices"] = forms.ChoiceField(choices=choices)
Run Code Online (Sandbox Code Playgroud)
NewForm(my_actual_choices)或NewForm(my_actual_choices, request.POST, request.FILES)等.
| 归档时间: |
|
| 查看次数: |
4584 次 |
| 最近记录: |