Django Поле выбора похоже на Admin (разрешения) - PullRequest
0 голосов
/ 11 марта 2020

К сожалению, у нас есть несколько действительно длинных выпадающих списков, которые могут выбрать наши пользователи, и способ, которым администратор django реализовал их разрешения, действительно выглядит как хорошее решение для этого, но я не могу найти свою жизнь какие-нибудь примеры, как реализовать нечто подобное?

У кого-нибудь есть советы? (В настоящее время я использую «Select2MultipleWidget», чтобы хотя бы сделать его несколько управляемым)

enter image description here

Шаблон:

 <script type="text/javascript" src="/static/admin/js/jquery.min.js"></script>
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script>

 
 {{ form.media }}

    <div style="position: relative">
        <form method="POST">
            {% csrf_token %}
                <div class="form-row">
                    <div class="form-group col-md-6 mb-0">
                        {{ form.date|as_crispy_field }}
                    </div>
                </div>
                <div class="form-row">
                    <div class="form-group col-md-6 mb-0">
                        {{ form.priceplan|as_crispy_field }}
                    </div>
                </div>
                <div class="form-row">
                    <div class="form-group col-md-6 mb-0">
                        {{ form.account|as_crispy_field }}
                    </div>
                </div>
            <button type="submit" class="btn btn-info">Submit</button>
        </form>
    </div>

    <link rel="stylesheet" type="text/css" href="/static/admin/css/widgets.css" />
    <script type="text/javascript" src="{% url 'javascript-catalog' %}"></script>

urls.py:

#Multiple Select Widget without this non-admins won't have this rendered correctly
re_path(r'^jsi18n/$', JavaScriptCatalog.as_view(), name='javascript-catalog')

forms.py:

priceplan = forms.ModelMultipleChoiceField(queryset=WrmAutPricePlan.objects.order_by(), required=False,
                                           widget=FilteredSelectMultiple("Price Plan", is_stacked=False))
account = forms.ModelMultipleChoiceField(queryset=WrmAutAccount.objects.all(), required=False,
                                         widget=FilteredSelectMultiple("Account", is_stacked=False))

class Media:
            css = {'all':('/admin/css/widgets.css', 'admin/css/overrides.css'),}
            js = ('/admin/jquery.js','/admin/jsi18n/')
...