【问题标题】:how to set form field value - django如何设置表单字段值 - django
【发布时间】:2013-10-29 00:47:14
【问题描述】:

如果没有可显示的内容,我想显示一个空的表单域,否则一个带有值的表单域:

{% if somevalue %}
  {{form.fieldname}} #<---- how do i set the `somevalue` as value of fieldname here?
{% else %}
  {{form.fieldname}}
{% endif %}

【问题讨论】:

  • 在你看来form = YourForm(initial={'fieldname': somevalue})
  • @AlexanderLarikov,你回答我检查一下?

标签: django forms


【解决方案1】:

在你看来这样做,如果它的 CBV

class YourView(FormView):
    form_class = YourForm

    def get_initial(self):
        # call super if needed
        return {'fieldname': somevalue}

如果它的通用视图,或者不是FormView,你可以这样做

form = YourForm(initial={'fieldname': somevalue})

【讨论】:

    【解决方案2】:

    有多种方法可以以 django 形式提供初始数据。
    至少其中一些是:

    1) 提供初始数据作为字段参数。

    class CityForm(forms.Form):
        location = ModelChoiceField(queryset=City.objects.all(), initial='Munchen')
    

    2)在表单的init方法中设置:

    class CityForm(forms.Form):
        location = ModelChoiceField(queryset=City.objects.all())
    
        def __init__(self, *args, **kwargs):
            super(JobIndexSearchForm, self).__init__(*args, **kwargs)
            self.fields['location'].initial = 'Munchen'
    

    3) 实例化表单时传递带有初始值的字典:

    #views.py
    form = CityForm(initial={'location': 'Munchen'})
    

    在你的情况下,我想这样的事情会起作用..

    class CityForm(forms.Form):
        location = ModelChoiceField(queryset=City.objects.all())
    
        def __init__(self, *args, **kwargs):
            super(JobIndexSearchForm, self).__init__(*args, **kwargs)
            if City.objects.all().exists():
                self.fields['location'].initial = ''
            else:
                self.field['location'].initial = City.objects.all()[:1]
    

    这一切都只是为了演示,您必须根据您的情况进行调整。

    【讨论】:

      猜你喜欢
      • 2021-08-14
      • 1970-01-01
      • 2010-10-23
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 2019-06-03
      • 2018-12-17
      • 2015-02-17
      相关资源
      最近更新 更多