8

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

这是我的一种形式:

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)

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

4

2 回答 2

19

This problem is not really specific for Django Crispy Forms.

One option is to set the label in the init() method of your JobPostForm.

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

A good read when dealing with these kind of questions is Overloading Django Form Fields.

于 2013-04-29T12:49:33.123 回答
2

There is an easier way to do this. See my example below:

    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",
                }
            ),
        }

Then, then rendering the form on the template:

<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>

RESULT:

Result of the above code

于 2020-10-22T14:35:52.230 回答