Django PhoneNumberField库在使用引导类时出现问题
我正在使用PhoneNumberField库。但是当我访问这个字段并给出bootstrap类时,布局就改变了。它在一行显示PhoneNumberPrefixWidget,在另一行显示PhoneNumberField。我希望它们彼此相邻显示。我尝试使用for循环,但仍然无法得到我想要的 forms.pyDjango PhoneNumberField库在使用引导类时出现问题,django,Django,我正在使用PhoneNumberField库。但是当我访问这个字段并给出bootstrap类时,布局就改变了。它在一行显示PhoneNumberPrefixWidget,在另一行显示PhoneNumberField。我希望它们彼此相邻显示。我尝试使用for循环,但仍然无法得到我想要的 forms.py phone_no = PhoneNumberField( widget=PhoneNumberPrefixWidget(attrs={'class': 'form-control'
phone_no = PhoneNumberField(
widget=PhoneNumberPrefixWidget(attrs={'class': 'form-control'})
)
在settings.py中
PHONENUMBER_DB_FORMAT = 'NATIONAL'
PHONENUMBER_DEFAULT_REGION = 'BT'
在我的html模板中
{{ form.phone_no }}
是否有单独访问此字段的方法?默认情况下,当我访问{{form.phone_no}时,这两个字段同时出现
提前感谢您可以通过扩展关注的
多窗口小部件
类,从模板中单独访问元素,并添加以下功能:
class CustomPhoneNumberPrefixWidget(PhoneNumberPrefixWidget):
def subwidgets(self, name, value, attrs=None):
context = self.get_context(name, value, attrs)
return context['widget']['subwidgets']
现在,您不应该使用PhoneNumberRefixWidget
,而应该使用CustomPhoneNumberRefixWidget
,如下所示:
class ContactForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
contact_widgets = self.fields['primary_contact'].widget.widgets
contact_widgets[0].attrs.update({'class': 'col-4 form-select'})
contact_widgets[1].attrs.update({'class': 'col-8 form-control'})
class Meta:
model = BookerProfile
fields = (
'primary_contact',
'address',
'town',
'postcode',
)
widgets = {
"primary_contact" : CustomPhoneNumberPrefixWidget(),
"address" : widgets.Textarea(attrs={'class': 'form-control'}),
"town" : widgets.TextInput(attrs={'class': 'form-control'}),
"post" : widgets.TextInput(attrs={'class': 'form-control'}),
}
然后,您可以像这样(或在循环中)在模板中分别访问这两个元素:
请在这里发表评论,然后回答这个问题。我也有同样的问题。事实上,当我使用
PhoneNumberPrefixWidget
时,我也会遇到验证错误的问题。这里的细节
{{ object.primary_contact.subwidgets.0 }}
{{ object.primary_contact.subwidgets.1 }}