Ответ 1
Я знаю, что эта ветка устарела, но, надеюсь, эта информация поможет кому-то, кто наткнулся на эту страницу, как я.
После большой боли и страданий я смог заставить это работать с Django 1.4. Как rh0dium, я пробовал все эти статьи, но должен был сделать много настроек.
Вам не нужно ничего делать с ModelForm, но вам нужно включить все эти js и css файлы в шаблон:
<script type="text/javascript" src="/admin/jsi18n/"></script>
<script type="text/javascript" src="{{ STATIC_URL }}admin/js/core.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}admin/js/jquery.min.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}admin/js/jquery.init.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}admin/js/SelectFilter2.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}admin/js/SelectBox.js"></script>
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}admin/css/widgets.css"/>
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}admin/css/base.css"/>
<link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}admin/css/forms.css"/>
Затем визуализируйте форму, как обычно, но вам нужно получить элементы набора полей и имена классов для работы css. Например:
<fieldset>
<div class="form-row">
<form method="post" action=".">
{% csrf_token %}
{{ form.as_p }}
<button type="submit" value="submit">Add</button>
</form>
</div>
</fieldset>
Затем в BOTTOM шаблона (после разметки для визуализации формы) добавьте этот script и замените pricetags на то, что ваше имя отношения Many to Many (M2M) находится в модели модели модели:
<script type="text/javascript">
addEvent(window, "load", function(e) { SelectFilter.init("id_pricetags", "pricetags", 0, "{{ STATIC_URL }}admin/"); });
</script>
По-видимому, ваше местоположение в медиа может быть чем-то другим, но {{STATIC_URL}} admin/работал у меня.