django 脆皮表格标签覆盖不起作用
django crispy forms label override not working
我似乎无法用 Django 脆皮形式覆盖默认标签。
model.py
class User(AbstractUser):
house_name_number = models.CharField(max_length=255)
street_name = models.CharField(max_length=255)
town_city = models.CharField(max_length=255)
county = models.CharField(max_length=255)
postcode = models.CharField(max_length=8)
same_address = models.BooleanField()
move_in_date = models.DateField(null=True)
forms.py
class AddressForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.helper.label_class = 'sr-only'
self.helper.form_tag = False
self.helper.layout = Layout(
PrependedText('postcode', '<i class="fa fa-home"></i>', placeholder="Postcode", autofocus=""),
PrependedText('house_name_number', '<i class="fa fa-home"></i>', placeholder="Building Number or Name",
),
PrependedText('street_name', '<i class="fa fa-home"></i>', placeholder="Street Name",
),
PrependedText('town_city', '<i class="fa fa-home"></i>', placeholder="Town or City",
label="test"),
PrependedText('county', '<i class="fa fa-home"></i>', placeholder="County"),
Field('same_address', '<i class="fa fa-home"></i>',
label="Have you lived at the property for 3 years"),
PrependedText('move_in_date', '<i class="fa fa-calendar"></i>', required=False,
placeholder="What date did you move in to your current address"),
)
不知道为什么 crispy 表单覆盖不起作用。但我使用 class Meta
: 和标签选项 docs.djangoproject.com/en/dev/topics/forms/modelforms/...
做了一个解决方法
class AddressForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.helper.label_class = 'sr-only'
self.helper.form_tag = False
self.helper.layout = Layout(
PrependedText('house_name_number', '<i class="fa fa-home"></i>', placeholder="Building Number or Name",
),
PrependedText('street_name', '<i class="fa fa-home"></i>', placeholder="Street Name",
),
PrependedText('town_city', '<i class="fa fa-home"></i>', placeholder="Town or City",
label="test"),
PrependedText('county', '<i class="fa fa-home"></i>', placeholder="County"),
PrependedText('postcode', '<i class="fa fa-home"></i>', placeholder="Postcode", autofocus=""),
Field('same_address', ),
PrependedText('move_in_date', '<i class="fa fa-calendar"></i>',
placeholder="What date did you move in to your current address"),
)
class Meta:
model = User
fields = ['house_name_number',
'street_name',
'town_city',
'county',
'postcode',
'same_address',
'move_in_date',
]
labels = {
'same_address': 'Have you lived at the property for 3 years?',
}
我建议在表单的 __init__
方法中设置自定义标签:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['town_city'].label = 'Test'
...
将 label="something"
添加到 Crispy Forms 字段将在输入字段上产生 "label" 属性,这不是您想要的。
我似乎无法用 Django 脆皮形式覆盖默认标签。
model.py
class User(AbstractUser):
house_name_number = models.CharField(max_length=255)
street_name = models.CharField(max_length=255)
town_city = models.CharField(max_length=255)
county = models.CharField(max_length=255)
postcode = models.CharField(max_length=8)
same_address = models.BooleanField()
move_in_date = models.DateField(null=True)
forms.py
class AddressForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.helper.label_class = 'sr-only'
self.helper.form_tag = False
self.helper.layout = Layout(
PrependedText('postcode', '<i class="fa fa-home"></i>', placeholder="Postcode", autofocus=""),
PrependedText('house_name_number', '<i class="fa fa-home"></i>', placeholder="Building Number or Name",
),
PrependedText('street_name', '<i class="fa fa-home"></i>', placeholder="Street Name",
),
PrependedText('town_city', '<i class="fa fa-home"></i>', placeholder="Town or City",
label="test"),
PrependedText('county', '<i class="fa fa-home"></i>', placeholder="County"),
Field('same_address', '<i class="fa fa-home"></i>',
label="Have you lived at the property for 3 years"),
PrependedText('move_in_date', '<i class="fa fa-calendar"></i>', required=False,
placeholder="What date did you move in to your current address"),
)
不知道为什么 crispy 表单覆盖不起作用。但我使用 class Meta
: 和标签选项 docs.djangoproject.com/en/dev/topics/forms/modelforms/...
class AddressForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.helper = FormHelper(self)
self.helper.label_class = 'sr-only'
self.helper.form_tag = False
self.helper.layout = Layout(
PrependedText('house_name_number', '<i class="fa fa-home"></i>', placeholder="Building Number or Name",
),
PrependedText('street_name', '<i class="fa fa-home"></i>', placeholder="Street Name",
),
PrependedText('town_city', '<i class="fa fa-home"></i>', placeholder="Town or City",
label="test"),
PrependedText('county', '<i class="fa fa-home"></i>', placeholder="County"),
PrependedText('postcode', '<i class="fa fa-home"></i>', placeholder="Postcode", autofocus=""),
Field('same_address', ),
PrependedText('move_in_date', '<i class="fa fa-calendar"></i>',
placeholder="What date did you move in to your current address"),
)
class Meta:
model = User
fields = ['house_name_number',
'street_name',
'town_city',
'county',
'postcode',
'same_address',
'move_in_date',
]
labels = {
'same_address': 'Have you lived at the property for 3 years?',
}
我建议在表单的 __init__
方法中设置自定义标签:
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.fields['town_city'].label = 'Test'
...
将 label="something"
添加到 Crispy Forms 字段将在输入字段上产生 "label" 属性,这不是您想要的。