Вы хотите динамически фильтровать варианты roles
choices
, поэтому вам потребуется ajax
для выполнения этой задачи.
Вот как вы можете сделать эту работу ..
1: OnChange
из event
отправьте event_id
на ваш пользовательский view
через ajax
.
2: Из Roles
модели filter
на основе event_id
, полученной из запроса ajax
, и вернуть отфильтрованный roles
по serializing
в JSON
.
3: Очистить существующий roles
и заполнить его, проанализировав ответ JSON
.
Например:
Это jquery
getJSON
пример
JavaScript:
$("#event").change(function (){
var event_id = $(this).val();
$.getJSON("/my-app/my-roles-filter-view/"+ event_id +"/",function(data){
var roles_dd = $("#roles");
$('#event >option').remove();
$.each(data, function(index,value) {
roles_dd.append($("<option />").val(value).text(value));
});
})(django.jquery);
URL,
('^/my-app/my-roles-filter-view/(?P<event_id>\d+)/$','my_view'),
вид:
def my_view(request,event_id):
qs = Role.objects.filter(event=event_id).values_list('id')
return HttpResponse(simplejson.dumps(qs),mimetype='application/javascript')
Это просто пример использования jquery
. Вы можете использовать любой тип ajax
и достичь этого.