我正在使用django-select2包在ForeignKey字段上实现可搜索选择。通过遵循文档中提到的步骤,我成功地获得了功能,但我在样式方面遇到了问题。
为了呈现我的表单,我使用了易碎的表单。除了Select2Widget之外,所有其他小部件都可以正常呈现。
如上图所示,表单元素的高度和宽度不像其他元素那样是动态的。
生成的HTML代码:
<div class=""> <select name="current_user" data-minimum-input-length="0" data-allow-clear="true" data-placeholder=""
class="select2widget form-control django-select2" required id="id_current_user">
<option value=""></option>
<option value="">---------</option>
<option value="4" selected>Arpita</option>
</select> </div>
</div>
<div id="div_id_device_admin" class="form-group"> <label for="id_device_admin" class=" requiredField">
Device admin<span class="asteriskField">*</span> </label>
<div class=""> <select name="device_admin" data-minimum-input-length="0" data-allow-clear="true" data-placeholder=""
class="select2widget form-control django-select2" required id="id_device_admin">
<option value=""></option>
<option value="">---------</option>
<option value="4" selected>Arpita</option>
</select> </div>
</div>
这就是我在ModelForm中设置小部件的方式。
def __init__(self, *args, in_org, **kwargs):
...
self.fields['current_user'].widget = Select2Widget()
self.fields['current_user'].queryset = in_org.user_set.all()
我觉得这主要是CSS样式的问题,我无法弄清楚这个问题。任何帮助都将不胜感激。
发布于 2020-08-16 12:24:27
对于那些正在寻找解决方案的人(尽管我认为这不是最好的),
您可以通过传递attrs={'data-width': '100%'}
来修复布局问题
例如:
self.fields['current_user'].widget = Select2Widget(attrs={'data-width': '100%'})
或
current_user = forms.ChoiceField(
widget=ModelSelect2Widget(
model=User,
search_fields=['username__istartswith'],
attrs={'data-width': '100%'},
),
)
https://stackoverflow.com/questions/59988470
复制