Django - 如何在模型的当前字段上添加占位符?
Django - How do I add a placeholder on a modelform that's the current field of the model?
我希望能够像这样改变占位符:
<input placeholder=" {{ input.placeholder }}">
其中输入是 model
和 "placeholder" 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 %}
self.fields['placeholder']
指的是表单域对象,不是值;您不能将其用作占位符。但看起来你想要的是使用模型实例的值。
def __init__(self, *args, **kwargs):
super(Value, self).__init__(*args, **kwargs)
self.fields['value_text'].widget.attrs['placeholder'] = self.instance.placeholder
我希望能够像这样改变占位符:
<input placeholder=" {{ input.placeholder }}">
其中输入是 model
和 "placeholder" 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 %}
self.fields['placeholder']
指的是表单域对象,不是值;您不能将其用作占位符。但看起来你想要的是使用模型实例的值。
def __init__(self, *args, **kwargs):
super(Value, self).__init__(*args, **kwargs)
self.fields['value_text'].widget.attrs['placeholder'] = self.instance.placeholder