AutoSkill پیاده‌سازی MultiSelectField با Select2 در ادمین جنگو

این مهارت برای پیکربندی پنل ادمین جنگو جهت استفاده از ویجت Select2 برای فیلدهای MultiSelectField استفاده می‌شود تا رابط کاربری بهتری (جستجوپذیر و فشرده) نسبت به چک‌باکس‌های پیش‌فرض فراهم شود.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/Persian/پیاده-سازی-multiselectfield-با-select2-در-ادمین-جنگو" ~/.claude/skills/ecnu-icalk-autoskill-multiselectfield-select2 && rm -rf "$T"
manifest: SkillBank/ConvSkill/Persian/پیاده-سازی-multiselectfield-با-select2-در-ادمین-جنگو/SKILL.md
source content

پیاده‌سازی 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

  1. Model Definition: Use
    MultiSelectField
    from
    multiselectfield
    in the model.
  2. 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()]
    .
  3. Admin Form: Create a
    ModelForm
    in
    admin.py
    .
  4. Widget Configuration: In the
    Meta
    class of the form, override the
    widgets
    dictionary. Assign
    Select2MultipleWidget
    to the
    MultiSelectField
    fields.
  5. Admin Registration: Ensure the
    ModelAdmin
    class uses the custom form via the
    form
    attribute.
  6. 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

# models.py
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())

# admin.py
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 در فرم ادمین