Django - Как добавить заполнитель в форму модели, которая является текущим полем модели? - PullRequest
0 голосов
/ 28 августа 2018

Я хочу иметь возможность изменять заполнитель следующим образом:

<input placeholder=" {{ input.placeholder }}">

Где вводом является model с «заполнителем» field. Поле заполнителя будет отличаться, так как я буду использовать набор форм, и каждый заполнитель будет отличаться.

Вот мой modelForm

class Value(forms.ModelForm):

class Meta:
    model = ValueModel
    fields = ['value_text']
    widgets = {
        'value_text': forms.TextInput(attrs={'class': 'form-control'})

и мой modelformset

values_formset = modelformset_factory(model=ValueModel, extra=0, form=Value)

Я пытался

class Value(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(Value, self).__init__(*args, **kwargs)
        self.fields['value_text'].widget.attrs['placeholder'] = self.fields['placeholder']

class Meta:
    model = ValueModel
    fields = ['value_text', 'placeholder']
    widgets = {
        'value_text': forms.TextInput(attrs={'class': 'form-control'})

И другие попытки изменить self.fields безуспешно.

Редактировать: Соответствующая часть моего views.py:

def page_view(request, values_id):
    values_form =  values_formset(queryset=ValueModel.objects.filter(
        values_id=values_id))

    context = {'value': values_form}
    return render(request, 'view.html', context)

Мой шаблон просмотра:

{{ value.management_form }}
{% for form in value %}
{{ form.id }}
{{ form.value_text }}
{% endfor %}

1 Ответ

0 голосов
/ 28 августа 2018

self.fields['placeholder'] относится к объекту поля формы, а не к значению; Вы не могли бы использовать его в качестве заполнителя. Но похоже, что вы хотите использовать значение экземпляра модели.

def __init__(self, *args, **kwargs):
    super(Value, self).__init__(*args, **kwargs)
    self.fields['value_text'].widget.attrs['placeholder'] = self.instance.placeholder
...