【问题标题】:Django and Crispy Forms- Can not get default value to work in Radio Select widget.Django 和 Crispy Forms - 无法获取默认值以在 Radio Select 小部件中工作。
【发布时间】:2013-12-28 22:33:58
【问题描述】:

使用 Django 和 Crispy 表单我试图在区域字段中为我的收音机选择小部件创建一个初始/默认值。

有人告诉我,最好的方法是在创建表单类时为其赋予“初始”值。我试过了,我得到了'CreateForm' object is not callable。我还通过在区域字段中将其作为额外参数提供给表单本身进行了尝试,但该以太币没有成功。

views.py:

class CreateRequest(LoginRequiredMixin, CreateView):
    model = Request
    fields = ['region', 'ddi', 'zen_desk_ticket', 'user_assigned', 'user_requester', 'date_due', 'description']
    template_name = "requests_app/create_request.html"
    obj = Region.objects.get(name='Chicago')
    form_class = CreateForm(initial = {"region": unicode(obj.pk)})
    success_url = '/'

    def form_valid(self, form):
        objects = form.save()
        return super(CreateRequest, self).form_valid(form)

forms.py:

class CreateForm(ModelForm):
    date_due = forms.DateTimeField(
            widget=DateTimePicker(options={"format": "YYYY-MM-DD HH:MM",
                                          "pickTime": True}))

    region = forms.ModelChoiceField(widget=forms.RadioSelect, queryset= Region.objects.all(),
            empty_label=None)

    class Meta:
        model = Request
        exclude = ('completed', 'date_completed')

    def __init__(self, *args, **kwargs):
        super(CreateForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_class = 'form-horizontal'
        self.helper.label_class = 'col-lg-2 control-label'
        self.helper.field_class = 'col-lg-4'

        self.helper.layout = Layout(
            Fieldset('Create',
                     'region',
                     'user_assigned',
                     'user_requester',
                     'date_due',
                     'description',
            ),

            FormActions(
                Submit('submit', 'Submit', css_class='btn-primary')
            )
        )

【问题讨论】:

    标签: python django forms django-crispy-forms


    【解决方案1】:

    为表单设置参数的好地方是get_form_kwargs 方法。例如:

    class YourView(CreateView):
        form = YourFormClass  # no arguments here
    
        def get_form_kwargs(self):
            kwargs = super(YourViewName, self).get_form_kwargs()
            kwargs['initial'] = {}  # your initial data here
            return kwargs
    

    【讨论】:

      猜你喜欢
      • 2014-06-22
      • 1970-01-01
      • 2015-02-19
      • 1970-01-01
      • 2014-05-09
      • 2023-03-24
      • 1970-01-01
      • 1970-01-01
      • 2013-07-10
      相关资源
      最近更新 更多