如何从Django窗口小部件中删除HTML5属性

如何从Django窗口小部件中删除HTML5属性,django,django-widget,Django,Django Widget,Django小部件根据模型max_length设置HTML5的maxlength属性 class Publication(models.Model): name = models.CharField(max_length=255) <input maxlength="255" required="" id="id_name" type="text"> 我想删除这个属性,因为它会干扰我自己的验证,这更复杂 我知道required属性可以设置为false,但我不知道其他htm

Django小部件根据模型max_length设置HTML5的maxlength属性

class Publication(models.Model):
    name = models.CharField(max_length=255)

<input maxlength="255" required="" id="id_name" type="text">
我想删除这个属性,因为它会干扰我自己的验证,这更复杂

我知道required属性可以设置为false,但我不知道其他html5属性

我想将它们以多种形式应用于不同的领域

修改表单init是可以的,但伸缩性不是很好

基类和继承是一个选项,但我不想应用于所有字段


我正在寻找像required=false这样的东西,以应用于多个字段。

这里是一个来自书本模型的表单示例。我引入了一个名为title的字段。在init方法中,我弹出该字段的maxlength属性。进入HTML时,没有maxlength属性

from django import forms
from .models import Book

class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ('title',)

    def __init__(self, *args, **kwargs):
        super(BookForm, self).__init__(*args, **kwargs)
        self.fields['title'].widget.attrs.pop('maxlength', None)

下面是一个来自书本模型的表单示例。我引入了一个名为title的字段。在init方法中,我弹出该字段的maxlength属性。进入HTML时,没有maxlength属性

from django import forms
from .models import Book

class BookForm(forms.ModelForm):
    class Meta:
        model = Book
        fields = ('title',)

    def __init__(self, *args, **kwargs):
        super(BookForm, self).__init__(*args, **kwargs)
        self.fields['title'].widget.attrs.pop('maxlength', None)

我最近正在解决这个问题。我在forms.py中这样做了:

from django import forms


class ContactForm(forms.Form):
    your_name = forms.CharField(label='Your name', max_length=50, widget=forms.TextInput(attrs={'class':'form-control', 'placeholder':'Enter Name'}))
    your_surname = forms.CharField(required=False,label='Your surname', max_length=50, widget=forms.TextInput(attrs={'class':'form-control', 'placeholder':'Enter Surname'}))


    # Remove html5 attr from input field
    your_name.widget.attrs.pop('maxlength', None)

仅用于信息,这对表单而不是模型表单有效。

我最近解决了这个问题。我在forms.py中这样做了:

from django import forms


class ContactForm(forms.Form):
    your_name = forms.CharField(label='Your name', max_length=50, widget=forms.TextInput(attrs={'class':'form-control', 'placeholder':'Enter Name'}))
    your_surname = forms.CharField(required=False,label='Your surname', max_length=50, widget=forms.TextInput(attrs={'class':'form-control', 'placeholder':'Enter Surname'}))


    # Remove html5 attr from input field
    your_name.widget.attrs.pop('maxlength', None)

仅对信息有效,这对表单而不是模型表单有效。

能否显示您的code@bvmcode,更新,非常简单的代码;属性是由Django自动添加的,我想从htmlcan中删除它,然后显示您的code@bvmcode,更新,非常简单的代码;attr是由Django自动添加的,我想从HTMLS中删除它,因为没有简单的方法,我想以多种形式应用于我所知的特定字段。你可以创建一个简单的函数,使用字典和pops maxlength,但是你仍然需要init…如果我理解你说的话,知道了,谢谢,我在Django中搜索的是,required=false,在字段maxlength=false。所以没有简单的方法,我想以多种形式应用于我所不知道的特定字段。你可以创建一个简单的函数,它使用字典和pops maxlength,但是你仍然需要init…如果我理解你的意思,知道了,谢谢,我在搜索类似的东西,required=false存在于Django中,并且在字段maxlength=false。