Как выводить формы на основе выбранных параметров в 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-файлом.

Допустим, у меня есть следующие типы журналов:

  1. A -> выбирается 5 случайных чекбоксов
  2. 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 объекте.

Вернуться на верх