【问题标题】:Field labels crispy forms Django字段标签酥脆形式 Django
【发布时间】:2013-04-23 01:56:33
【问题描述】:

我想对两个表单使用相同的模型并更改字段的标签如何更改标签?

这是我的一种形式:

class jobpostForm(forms.ModelForm):

    class Meta:

        model = jobpost
        fields = ('job_type','title','company_name','location','country','description','start_date','end_date','how_to_apply')

    widgets = {

        'job_type':RadioSelect(),    
        'location':TextInput(attrs={'size':'70','cols': 10, 'rows': 20}),   
        'description': TinyMCE(attrs={'cols':'100', 'row': '80'}),
            'start_date':AdminDateWidget(attrs={'readonly':'readonly'}),
            'end_date':AdminDateWidget(attrs={'readonly':'readonly'}),
            'how_to_apply':RadioSelect(),

    }

    def __init__(self, *args, **kwargs):
        super(jobpostForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_class = 'horizontal-form'
        self.helper.form_id = 'id-jobpostform'
        self.helper.form_class = 'blueForms'
        self.helper.form_method = 'post'

        self.helper.form_action = '/portal/next/post/'

        self.helper.add_input(Submit(_('submit_addcontent'), 'Preview'))


        super(jobpostForm, self).__init__(*args, **kwargs)

就像我想将“位置”更改为“工作位置”..我该怎么做?

【问题讨论】:

    标签: django django-forms django-crispy-forms


    【解决方案1】:

    有一种更简单的方法可以做到这一点。请参阅下面的示例:

        class CreateAPIKey(forms.ModelForm):
    
        class Meta:
            model = APIKey
            fields = ["client_id"]
            labels = {
                "client_id": "Nome da Key",
            }
            help_texts = {
                "client_id": _(
                    "Um identificador exclusivo de formato livre da chave. 50 caracteres no máximo"
                ),
            }
            widgets = {
                "client_id": forms.TextInput(
                    attrs={
                        "id": "key_id",
                        "required": True,
                        "placeholder": "Entre um nome único para a chave",
                        "label": "dasdasdsdasd",
                    }
                ),
            }
    

    然后,然后在模板上渲染表单:

    <form class="" method="POST" action="#">
    {% csrf_token %}
      <div class="col-md-4 col-sm-12 form-group" data-children-count="1">
    
        {% for field in form %}
           {{ field|as_crispy_field }}
        {% endfor %}
                                                            
      </div>
    </form>
    

    结果:

    【讨论】:

      【解决方案2】:

      这个问题并不是 Django Crispy Forms 所特有的。

      一种选择是在JobPostForminit() 方法中设置标签。

      def __init__(self, *args, **kwargs):
          super(JobPostForm, self).__init__(*args, **kwargs)
          self.fields['location'].label = "Job Location"
      

      Overloading Django Form Fields 是处理此类问题时的好读物。

      【讨论】:

      • 我正在这样做,但它没有改变标签
      • 如何在模板中显示表单(字段)?
      • 像 {% crispy form %} 一样显示整个表单
      • 对于未来的读者:我遇到了同样的问题,我解决了它,确保 self.fields['location'].label = "Job Location" 被设置之后 super(JobPostForm, self).__init__(*args, **kwargs)。 @arie 的回答对我有用。
      猜你喜欢
      • 2012-12-06
      • 2019-04-26
      • 2019-03-17
      • 2014-10-11
      • 2018-01-16
      • 2015-02-18
      • 2020-06-13
      • 1970-01-01
      • 2014-12-28
      相关资源
      最近更新 更多