базовый виджет Django CheckboxSelectMultiple
позволяет передавать label
и value
в шаблон.Я хочу добавить 2 дополнительных поля из модели, но не могу понять, каким образом, хотя я полагаю, что это происходит через подклассы get_context
У меня есть эта модель, и я хотел бы включить icon
и description
в виджете
class AddOnItem(models.Model):
name = models.CharField(
verbose_name = 'AddOn Title',
max_length = 50
)
description = models.CharField(
verbose_name = 'Description',
max_length = 255
)
icon = models.FileField(upload_to="addon_icons/", blank=True, null=True)
active = models.BooleanField(default=False)
В моей форме я определил этот виджет
class JobPostWizardForm1(forms.ModelForm):
class Meta:
model = Job
fields = [
...,
'addons'
]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
...
self.fields['addons'].widget = AddOnCheckboxSelectMultiple()
self.fields['addons'].queryset = AddOnItem.objects.filter(active=True)
И я выделил подкласс CheckboxSelectMultiple
как
class AddOnCheckboxSelectMultiple(forms.CheckboxSelectMultiple):
template_name = 'jobboard/widgets/addon_checkbox_select.html'
option_template_name = 'jobboard/widgets/addon_checkbox_option.html'
def get_context(self, name, value, attrs):
context = super().get_context(name, value,attrs)
return context
Очевидно, что в данный момент это ничего не делает, но я хочу добавить что-то вроде
context['icon'] = obj.icon
, но я не могу понять, как это сделать.То есть я не слежу за тем, как виджеты Django получают объект.
Буду очень признателен за любую доступную помощь - спасибо