Django - 如何在作为模型当前字段的模型表单上添加占位符?

Posted

技术标签:

【中文标题】Django - 如何在作为模型当前字段的模型表单上添加占位符?【英文标题】:Django - How do I add a placeholder on a modelform that's the current field of the model? 【发布时间】:2019-02-03 06:44:58 【问题描述】:

我希望能够像这样改变占位符:

<input placeholder="  input.placeholder ">

输入是带有“占位符”fieldmodel。由于我将使用表单集,因此占位符字段会有所不同,并且每个占位符都会有所不同。

这是我的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 %

【问题讨论】:

你能发布整个视图吗? @WillKeeling 更新了帖子 【参考方案1】:

self.fields['placeholder'] 指的是表单字段对象,而不是值;您不能将其用作占位符。但似乎您想要的是使用模型实例的值。

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

【讨论】:

以上是关于Django - 如何在作为模型当前字段的模型表单上添加占位符?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 django 表单/模型来表示字段之间的选择?

如何在 Django 管理员中为模型字段使用自定义表单字段?

如何在 django 模型表单中添加自定义字段?

如何在 django 中将一个表单字段拆分为模型的多个字段?

如何在 Django 中向 ModelForm 添加非模型字段?

如何在 django 中创建表单和模型中使用的字段的单选按钮