Как изменить атрибут option в селекте с помощью форм Django
У меня есть следующая форма Django (усеченная):
from django.forms import ModelForm
from django import forms
from expense.models import Expense
class ExpenseForm(ModelForm):
class Meta:
model = Expense
fields = ['category', 'type']
widgets = {
'expense_category': forms.Select(
attrs={
'class': 'form-control',
}
),
'expense_type': forms.Select(
attrs={
'class': 'form-control',
}
),
}
Вот html-файл:
<select name="expense_category" class="form-control" multiple="" id="id_expense_category">
<option value="A" selected>A</option>
<option value="B">B</option>
<option value="C">C</option>
</select>
<select name="expense_type" class="form-control" multiple="" id="id_expense_type">
<option value="1" selected>1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
Желаемый результат:
<select name="expense_type" class="form-control" multiple="" id="id_expense_type">
<option class="category_a" value="1" selected>1</option>
<option class="category_b" value="2">2</option>
<option class="category_c" value="3">3</option>
</select>
Короче говоря, я хотел бы добавить атрибут 'class' к опциям выбора, но не знаю как. Я нашел решение на stackoferflow от 2011 года, но похоже, что оно уже устарело.
model.py
(усечено):
from django.db import models
from django.contrib.auth.models import User
from project.models import Project
from expense.constants import *
class Expense(models.Model):
user = models.ForeignKey(
User,
null=True,
blank=True,
on_delete=models.SET_NULL,
)
expense_category = models.CharField(
choices=EXPENSE_CATEGORY,
default=EXPENSE_STAFFING_PAYMENTS,
max_length=200,
)
expense_type = models.CharField(
choices=EXPENSE_TYPE,
default=EXPENSE_PRINTER_LEASE,
max_length=200,
)