Я вижу, что это делается двумя способами.
Вы можете создать собственный виджет для этого поля, который будет отображать атрибуты модели каждого параметра.Это очень возможно, но у меня сейчас нет времени, чтобы написать все это.
Другой, более быстрый метод - добавить в форму функцию, которая обрабатывает это и возвращает нужные вам данные
class ChooseProductTypeForm(ModelForm):
def get_my_modelfield(self):
for option in self.fields['my_modelfield'].queryset:
yield {
'image': option.image,
'title': option.title,
'description': option.description
}
В основном это позволяет исключить базу данных из шаблона и просто использовать простую функцию формы для возврата нужных вам данных.Если поле формы когда-либо изменяется, вы больше не разбрасываете настройки шаблонов, а просто обновляете эту функцию.
Недостатком этого является то, что вы не можете просто циклически проходить по полям в вашей форме, вы получитевыводить каждый явно.Конечно, вы также можете играть с __iter__
в вашей форме, но это может быть слишком хакерским.Не уверен, что вы имеете дело здесь полностью:)