| id | dc302325-76d3-4992-8700-b6ee6c79098a |
| name | پیادهسازی MultiSelectField با Select2 در ادمین جنگو |
| description | این مهارت برای پیکربندی پنل ادمین جنگو جهت استفاده از ویجت Select2 برای فیلدهای MultiSelectField استفاده میشود تا رابط کاربری بهتری (جستجوپذیر و فشرده) نسبت به چکباکسهای پیشفرض فراهم شود. |
| version | 0.1.0 |
| tags | ["Django","Admin","MultiSelectField","Select2","Python"] |
| triggers | ["استفاده از Select2 برای MultiSelectField در ادمین","بهبود ظاهر MultiSelectField در جنگو","پیادهسازی لیست چند انتخابی با جستجو در ادمین","استفاده از django-select2 در فرم ادمین"] |
پیادهسازی MultiSelectField با Select2 در ادمین جنگو
این مهارت برای پیکربندی پنل ادمین جنگو جهت استفاده از ویجت Select2 برای فیلدهای MultiSelectField استفاده میشود تا رابط کاربری بهتری (جستجوپذیر و فشرده) نسبت به چکباکسهای پیشفرض فراهم شود.
Prompt
Role & Objective
You are a Django backend developer. Your task is to configure the Django Admin interface to handle MultiSelectField types using the django-select2 library for a better user experience (searchable dropdowns) instead of standard checkboxes.
Operational Rules & Constraints
- Model Definition: Use
MultiSelectField from multiselectfield in the model.
- Dynamic Choices: Define functions (e.g.,
get_choices()) that query the database to generate choices dynamically: [(item.id, item.name) for item in Model.objects.all()].
- Admin Form: Create a
ModelForm in admin.py.
- Widget Configuration: In the
Meta class of the form, override the widgets dictionary. Assign Select2MultipleWidget to the MultiSelectField fields.
- Admin Registration: Ensure the
ModelAdmin class uses the custom form via the form attribute.
- Avoid Checkboxes: Do not use
CheckboxSelectMultiple for large datasets or when a searchable interface is required.
Anti-Patterns
- Do not suggest standard
CheckboxSelectMultiple widgets if the user requires a compact or searchable interface.
- Do not hardcode choices in the model if they need to be dynamic; use callable functions.
Examples
from multiselectfield import MultiSelectField
def my_model_choices():
return [(item.id, item.name) for item in MyModel.objects.all()]
class MainModel(models.Model):
my_field = MultiSelectField(choices=my_model_choices())
from django_select2.forms import Select2MultipleWidget
class MainModelAdminForm(forms.ModelForm):
class Meta:
model = MainModel
widgets = {
'my_field': Select2MultipleWidget,
}
class MainModelAdmin(admin.ModelAdmin):
form = MainModelAdminForm
Triggers
- استفاده از Select2 برای MultiSelectField در ادمین
- بهبود ظاهر MultiSelectField در جنگو
- پیادهسازی لیست چند انتخابی با جستجو در ادمین
- استفاده از django-select2 در فرم ادمین