Как выводить формы на основе выбранных параметров в django
Я хочу выводить формы на основе выбранных настроек. У меня есть тип журнала, представленный ниже:
class Journal(models.Model):
journalsId = models.AutoField(primary_key=True)
name = models.CharField(max_length=500)
acname = models.CharField(max_length=100)
issnprint = models.CharField(max_length=500)
issnonline = models.CharField(max_length=500)
logo = models.ImageField(null=True, blank=True, upload_to="images/journals/")
msg = models.CharField(max_length=500)
status = models.BooleanField(default=True)
c1_form_checkbox = models.BooleanField(default=True)
c2_form_checkbox = models.BooleanField(default=True)
c3_form_checkbox = models.BooleanField(default=True)
.
.
c19_form_checkbox = models.BooleanField(default=True)
Каждая C*_форма является html-файлом.
Допустим, у меня есть следующие типы журналов:
- A -> выбирается 5 случайных чекбоксов
- B -> 10 случайных флажков выбираются
Когда я выбираю любой тип журнала для заполнения форм, как я могу привести эти C*_form.html в порядок?
Спасибо
Возможно, множественный выбор будет лучше, чем 20 полей. Если вы хотите на рендере выводить дополнительные html в html. например я беру EditView из DGCBV:
class MyEditView(EditView):
template_name = 'main.html'
...
def get_context_data(self, *args, **kwargs):
kwargs['form_templates'] = []
for index in range (1, 20):
if getattr(self.object, f'c{index}_form_checkbox', False):
kwargs['form_templates'] += [f'C{index}_form.html']
return super().get_context_data(*args, **kwargs)
в main.html
:
{% for form_template in form_templates %}
{% includes form_template %}
{% endfor %}
Это поможет вам визуализировать множество дополнительных шаблонов в основной шаблон. И это зависит от checkboxes
в вашем Journal
объекте.