Динамическое поле ModelChoiceField на шаблоне

Я хотел бы иметь поле ModelChoiceField, которое динамически изменяется пользователем непосредственно на форме.

В принципе, я создаю CMS, и у пользователя есть несколько шаблонов в его распоряжении, однако я хотел бы отображать в выпадающем списке только те шаблоны, которые соответствуют типу контента, который он производит.

Например, у нас будет первый выпадающий список для выбора content_type. Предположим, что мы выбираем article. Выбрав его, мы обновим второй выпадающий список, включающий side_image_article.html и default_article.html.

Вот MRE :

models.py

class MyTemplate(models.Model):
    template_name = models.Charfield(max_length=80)
    content_choices = [("article", "article"),
                       ("project", "project"),
                       ("press_release", "press_release"),
                       ("newsletter", "newsletter"),
                       ("newsletter_web", "newsletter_web"),
                       ("petition", "petition"),
                       ("mailing_list_signup",
                       "mailing_list_signup"),
                       ]
    content_type = models.CharField(max_length=100, choices=content_choices,
                                    default="article")

Каждому шаблону присваивается тип содержимого, соответствующий типу содержимого, для которого он предназначен.

все еще models.py

class MyBlogitem(models.Model)
    template = models.ForeignKey(MyTemplate, on_delete=models.PROTECT)
    body_text = models.TextField()
    content_choices = [("article", "article"),
                       ("project", "project"),
                       ("press_release", "press_release"),
                       ("newsletter", "newsletter"),
                       ("newsletter_web", "newsletter_web"),
                       ("petition", "petition"),
                       ("mailing_list_signup",
                       "mailing_list_signup"),
                       ]
    item_type = models.CharField(max_length=100, choices=content_choices,
                                 default="article")

А также forms.py

class MyBlogItemForm(ModelForm):

    template = ModelChoiceField(
        queryset=TopicBlogTemplate.objects.filter(
            content_type=???),
        empty_label=None)

Так что здесь целью было бы отфильтровать поле template с помощью поля content_type, оба из которых находятся в выпадающих списках.

Они загружаются в режиме просмотра arg less, по адресу /new URL.

Спасибо!

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