字段标签酥脆形式 Django

Posted

技术标签:

【中文标题】字段标签酥脆形式 Django【英文标题】:Field labels crispy forms 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)

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

【问题讨论】:

【参考方案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 的回答对我有用。

以上是关于字段标签酥脆形式 Django的主要内容,如果未能解决你的问题,请参考以下文章

django 酥脆的形式 - 'SubWidget' 对象没有属性 'field'

如何制作 django 酥脆的表格来隐藏特定的字段?

错误消息中的 Django Formset 字段标签

Django 酥脆的表单可以与自定义小部件一起使用吗?

Django自定义模型(model)中的字段标签

Django 选择表单字段的标签