【问题标题】:Django 2.2 - change with of related auto_complete field on admin formDjango 2.2 - 在管理表单上更改相关的 auto_complete 字段
【发布时间】:2023-03-12 19:25:01
【问题描述】:

我正在尝试更改related auto_complete 字段的字段宽度。这样选中的记录会显示得更宽一些。

<span class="select2 select2-container select2-container--admin-autocomplete select2-container--focus" dir="ltr" style="width: 260px;">
 // ...
></span>

我创建了自己的表单并尝试摆弄widget.attrs(在 init 内部),但效果为零。这本身并不奇怪,因为这些都是渲染的跨度元素。

class OrderLineForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        self.fields['product'].widget.attrs.update({'stytle': 'width: 400px'})
        self.fields['product'].widget.attrs.update({'width': 400})

我也在寻找正在使用的小部件,但也没有找到。 Djanog 文档解释了form.Select 是一个简单的下拉列表,它不提供自动完成功能。

我也尝试为 .select2 类更改一些 css,但似乎没有任何效果。

【问题讨论】:

    标签: django django-admin


    【解决方案1】:

    这是一个示例,说明如何更改自动完成小部件上的选定和显示选项的大小以适应完整的文本大小。

    from django import forms
    from django.contrib import admin
    from django.contrib.admin.widgets import AutocompleteSelect
    
    class OrderLineForm(forms.ModelForm):
            class Meta:
            model = YourModel
            fields = '__all__'
    
            widgets = {
                'product': AutocompleteSelect(
                    YourModel._meta.get_field('product').remote_field,
                    admin.site,
                    attrs={'data-dropdown-auto-width': 'true', 'style': "width: 100%;"}
                ),
            }
    
    

    【讨论】: