Динамическое поле 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.
Спасибо!