Я думал, что это довольно простая задача, но оказалось, что это не так. Итак, у меня есть два разных миксина для использования в классе администратора Django. в них обоих есть коды с шаблонами.
admin.pyclass AdminMixin01(admin.ModelAdmin):
change_form_template = "change_form1.html"
class AdminMixin02(admin.ModelAdmin):
change_form_template = "change_form2.html"
class ModalAdmin(AdminMixin01, AdminMixin02, admin.ModelAdmin):
pass
change_form1.html
{% extends "change_form.html" %}
{% block content %}
{{ block.super }}
Form 1
{% endblock content %}
change_form2.html
{% extends "change_form.html" %}
{% block content %}
{{ block.super }}
Form 2
{% endblock content %}
это выглядит довольно просто как со стороны Python, так и со стороны HTML.
Проблема в том, что Django отображает только шаблон первого миксина и игнорирует второй шаблон миксина. В этом случае только change_form1.html визуализирован в исходный шаблон change_form.html и никаких следов от change_form2.html.
Коды python в обоих миксинах работают, за исключением кодов html. Любые идеи ?
да, как вы сказали, django не будет использовать оба шаблона, поэтому я написал коды html в исходный change_form.html, а затем добавил проверочные переменные в оба миксина. и оберните html-коды операторами if в исходный html. я не доволен этим, но это сработало. большое спасибо!
Я решил это, скопировав часть кода в свой новый шаблон, в котором были полезны оба варианта. так же, как вы сказали, что сделали. боль в B **






Я совсем не знаком с миксинами администрирования Django, но, просто зная основы Python, очевидно, что ваш
ModalAdminбудет иметь только одно свойствоchange_form_template, в зависимости от того, какой изAdminMixin01иAdminMixin02будет первым в MRO. Я предполагаю, что этоAdminMixin01, потому что он идет первым - что, кажется, подтверждается тем, что вы видите. Поэтому я не думаю, что вы можете сделать это так, как пытаетесь. (И я тоже не уверен, что вы пытаетесь сделать. Если нужно просто показать два разных подшаблона в одном, просто используйте наследование или включение шаблонов.)