2016-10-06 1 views
1

ModelMultipleChoiceField에 대해 django.contrib.admin.widgets의 FilteredSelectMultiple 위젯을 사용하고 있습니다. 내 장고 1.8 환경에서 위대한 작동하지만 1.10.1 함께 시도 할 때 addEvent <script> 태그를 렌더링 한 후에 실패합니다.FilteredSelectMultiple 위젯이 1.10.1에서 작동하지 않습니다 (1.8에서 작동)

<tr><th></th><td><select multiple="multiple" class="selectfilter" id="id_cats" name="cats"> 
<option value="1" selected="selected">Other</option> 
<option value="2" selected="selected">Education</option> 
<option value="3" selected="selected">Utilities</option> 
</select><script type="text/javascript">addEvent(window, "load", function(e) {SelectFilter.init("id_cats", "Categories", 0, "/static/admin/"); });</script> 
<input id="id_user" name="user" type="hidden" value="1" /></td></tr> 
012 : 형태

{% extends "base.html" %} 
{% load bootstrap3 %} 

{% block title %} 
<title>Account Settings</title> 
{% endblock %} 

{% block content %} 
<div class="container-fluid"> 
<div class="row"> 
    <div class="col-m-3"></div> 
    <div class="col-m-9"> 
    <form action="{% url 'manage' %}" method="post"> 
    <div class="form-group"> 
    {% csrf_token %} 
    {{ form.as_table }} 
    </div> 
    </div> 
    <div class="col-m-3"></div> 
</div> 
<div class="row center"> 
    <div class="col-xs-12"> 
    {% if is_get %} 
    <div class="center btn-group-vertical btn-group-lg"> 
    <input type="submit" name="profile" value="Edit Profile" class="btn btn-primary"/> 
    <input type="submit" name="categories" value="Edit Categories" class="btn btn-primary"/> 
    <input type="submit" name="deldata" value="Delete Budget" class="btn btn-warning"/> 
    <input type="submit" name="delacct" value="Delete Account" class="btn btn-danger"/> 
    <input type="submit" name="home" value="Home" class="btn btn-default"/> 
    </div> 
    {% else %} 
    <div class="btn-group"> 
    <input type="submit" name="save_{{ form.Meta.name }}" value="Save" class="btn btn-primary"/> 
    <input type="submit" name="cancel" value="Cancel" class="btn btn-default"/> 
    </div> 
    {% endif %} 
    </div> 
</div> 
</form> 
</div> 
{% endblock %} 
{% block footer %} 
<div class="center">{{ footer }}</div> 
{% endblock %} 

작업 페이지 소스 양식 템플릿 - forms.py

class UserCatForm(forms.ModelForm): 

    """Form to select Categories for user""" 

    form_errors = {"required": "You must choose at least one expense category"} 
    cats = forms.ModelMultipleChoiceField(
     error_messages=form_errors, 
     label="", 
     queryset=Categories.objects.all(), 
     widget=FilteredSelectMultiple("Categories", is_stacked=False, attrs={'class':'form-control'}), 
     ) 

    class Meta: 
     name = 'UserCatForm' 
     model = UserCat 
     fields = "__all__" 
     widgets = {'user':forms.HiddenInput(),} 

base.html

{% load staticfiles %} 
<html> 
<head> 
{% load bootstrap3 %} 
{% bootstrap_css %} 
{% bootstrap_messages %} 

<link rel="stylesheet" href="{% static 'css/budget.css' %}"> 
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css" /> 
<link rel="stylesheet" type="text/css" href="/static/admin/css/widgets.css" /> 

<script type="text/javascript" src="{% static 'js/jsi18n.js' %}"></script> 
<script type="text/javascript" src="/static/admin/js/jquery.min.js"></script> 
<script type="text/javascript" src="/static/admin/js/jquery.init.js"></script> 
<script type="text/javascript" src="{% static 'admin/js/core.js' %}"></script> 
<script type="text/javascript" src="{% static 'admin/js/SelectBox.js' %}"></script> 
<script type="text/javascript" src="{% static 'admin/js/SelectFilter2.js' %}"></script> 
<script src="http://code.jquery.com/jquery-1.9.1.js"></script> 
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> 

<script> 
$(function() { 
    $("#id_nextDueDate").datepicker(); 
    $("#id_endDate").datepicker(); 
}); 
</script> 


{% block title %}{% endblock %} 
</head> 
<div class="container-fluid"> 
    <div class="row"> 
    <div class="col-xs-12 well well-sm"> 
    <h1 class="center">GreenPrint PayPlanner</h1> 
     <div class="row"> 
     <div class="col-xs-6"> 
     {% if user.is_authenticated %} 
     {% if user.get_full_name %} 
     <p>Welcome {{ user.first_name }}! 
     {% else %} 
     <p>Welcome {{ user }}! 
     {% endif %} 
     <a title="Manage Settings" href="{% url 'manage' %}"><img border="0" width="75" alt="Manage Account" src="{% static "pics/settings.png" %}"></a> 
     </p> 
     </div> 
     <div class="col-xs-6 text-right"> 
     <a href="{% url 'logout' %}" class="text-warning">Logout</a> 
     </div> 
     {% endif %} 
     </div> 
    </div> 
    </div> 
<div class="row"> 
    <div class="col-xs-12">{% block content %}{% endblock %}</div> 
    </div> 
    <div class="row"> 
    <div class="col-xs-12">{% block footer %}{% endblock %}</div> 
    </div> 
</div> 
</html> 

manage.html에서

3,516,

작동하지 않음 페이지 소스 : 지금 내 템플릿과의 작업에 직접 스크립트를 넣어 추가 된

<tr><th></th><td><select multiple="multiple" class="selectfilter" data-field-name="Categories" data-is-stacked="0" id="id_cats" name="cats" required> 
<option value="1" selected="selected">Other</option> 
<option value="2" selected="selected">Utilities</option> 
<option value="3" selected="selected">Education</option> 
<option value="4" selected="selected">Car</option> 
</select><input id="id_user" name="user" type="hidden" value="1" /></td></tr> 

답변

1

나는이 고정보다 장고 - 에스크 방법을 발견 한 사람이이 문제에 걸쳐 온다면 나는 그것을 추가 할 생각. 이

addEvent(window, "load", function(e) {SelectFilter.init("id_cats", "Categories", 0, "/static/admin/"); }); 

가 전화를 내 폼에 미디어 서브 클래스를 생성 내가 외부 JS 파일에 addEvent 호출을 넣어 모두 1.8 1.10.1

에 ./static/js/catsfilter.js하고있다 JS

class Media: 
     js = ("js/catsfilter.js",) 

그리고 내 base.html 헤드 섹션에서 양식 미디어에 대한 호출로 대체 core.js, SelectBox.js 및 SelectFilter2에 대한 호출을 제거

<script type="text/javascript" src="{% static 'js/jsi18n.js' %}"></script> 
<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 }} 
1

.

<div class="form-group"> 
    {% csrf_token %} 
    {{ form.as_table }} 
    <script type="text/javascript">addEvent(window, "load", function(e) {SelectFilter.init("id_cats", "Categories", 0, "/static/admin/"); });</script> 
</div> 
관련 문제