Как передать атрибуты для опции в поле выбора (select) формы Django?

  • 15 августа 2023 г. 4:06
Ответы на вопрос 1
Для передачи атрибутов в поле выбора (select) в форме Django, вы можете использовать виджет `Select`. Виджет `Select` позволяет вам настроить каждую опцию с помощью атрибутов, включая `data-img_src`. 

Вот пример:

```python
from django import forms

class MyForm(forms.Form):
    my_choices = (
        ('option1', 'Опция 1'),
        ('option2', 'Опция 2'),
        ('option3', 'Опция 3'),
    )
    my_field = forms.ChoiceField(choices=my_choices, widget=forms.Select(attrs={'class': 'custom-select'}))

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['my_field'].widget.choices = [
            (choice[0], choice[1], {'data-img_src': '/path/to/image.png'})
            for choice in self.my_choices
        ]
```

В этом примере, атрибут `data-img_src` устанавливается с помощью параметра `attrs` при инициализации `Select` виджета. В методе `__init__` формы, мы перезаписываем выборки для поля `my_field`, добавляя атрибут `data-img_src` к каждой опции.

Вы можете изменить путь к изображению для каждой опции, заменив `'/path/to/image.png'` на переменную или функцию, возвращающую соответствующий путь к изображению для каждой опции.
Похожие вопросы