django - 如何从 View 中将值传递给 Django Form 的 init 方法?

标签 django forms views init choicefield

表格.py

class AddDuration(forms.Form):

    def __init__(self, *args, **kwargs): 
        super(AddDuration, self).__init__(*args, **kwargs)
        // set value to relates_to_choices
        relates_to_choices = ????????????? // Something like self.choices
        self.fields['duration'].choices = relates_to_choices

    duration = forms.ChoiceField(required=True)

现在,我有一个包含类的 views.py 文件
class AddDurationView(FormView):
    template_name = 'physician/add_duration.html'
    form_class = AddDurationForm

最佳答案

覆盖 get_form_kwargs() View 中的方法。
views.py

class AddDurationView(FormView):
    template_name = 'physician/add_duration.html'
    form_class = AddDurationForm

    def get_form_kwargs(self):
        kwargs = super(AddDurationView, self).get_form_kwargs()
        kwargs['duration_choices'] = (
            ('key1', 'display value 1'),
            ('key2', 'display value 2'),
        )
        return kwargs
forms.py
class AddDurationForm(forms.Form):
    duration = forms.ChoiceField(required=True)

    def __init__(self, duration_choices, *args, **kwargs): 
        super(AddDurationForm, self).__init__(*args, **kwargs)
        // set value to duration_choices
        self.fields['duration'].choices = duration_choices

关于django - 如何从 View 中将值传递给 Django Form 的 init 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28204421/

相关文章:

python - 使用 Django 类 View 获取当前登录用户?

python - Django 替换为模板中下划线的空格

ios - 如何使用 swiftui 设计具有半径部分的表单

android - 如何在另一个 View 基线中间对齐 View ?

javascript - 使用 AJAX 提交表单并将数据以 JSON 形式发送到文件

Javascript for 循环发布表单

MySQL View - 使用或不使用

python - django-tenant-schema 为所有租户启用管理模块

django - django中的重复对象,也重复子对象(相关对象)

python - Django:启动时重定向到 Web 应用程序