Я знаю, что эта ветка старая, но, надеюсь, эта информация поможет кому-то еще, кто наткнется на эту страницу, как я.
После долгих болей и страданий я смог заставить это работать с 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"/>
Затем визуализируйте форму, как обычно, но вам нужно правильно настроить элементы fieldset и имена классов, чтобы 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>
Затем в нижней части шаблона (после разметки для рендеринга формы) добавьте этот сценарий и замените цену тегами на любое имя отношения «многие ко многим» (M2M) в модели формы модели:
<script type="text/javascript">
addEvent(window, "load", function(e) { SelectFilter.init("id_pricetags", "pricetags", 0, "{{ STATIC_URL }}admin/"); });
</script>
Видимо, ваше местоположение мультимедиа может отличаться, но {{STATIC_URL}} администратор / работал для меня.