Суть такова, пытаюсь сделать 2 селекта в форме, второй зависит от первого, тоесть в завсимости от того, что выбираем в первом, появится соответствующие варианты во втором, моя в’юха:
class SpecialPromoProductView(CreateView):
form_class=SpecialPromoProductsForm
template_name='products/special_promo.html'
def get_form_kwargs(self, **kwargs):
kwargs = super(SpecialPromoProductView, self).get_form_kwargs(**kwargs)
kwargs['request'] = self.request
return kwargs
def get_context_data(self, *args, **kwargs):
context = super(SpecialPromoProductView, self).get_context_data(*args, **kwargs)
context['groups'] = GroupProducts.objects.filter(pid=None)\
.filter(groupproducts__in=Products.objects\
.filter(profile=self.request.user).values_list('group').distinct())
context['mygroups'] = GroupProducts.objects.filter(id__in=Products.objects\
.filter(profile=self.request.user).values_list('group').distinct())
return context
def get_queryset(self):
return profiles.objects.filter(groups=2)
def get_success_url(self):
return reverse_lazy('my-client')
в’юха ajax запроса:
def ajax_get_products(request):
if request.is_ajax():
id_product = Products.objects.filter(profile=request.user).filter(group=GroupProducts.objects.get(id=request.GET.get('group_choice')))
return render_to_response('products/special_promo.html', locals())
шаблон:
{% extends "header.html" %}
{% load staticfiles %}
{% block body_block %}
<form action="" method="get">
{% csrf_token %}
{{ form.client.label }}<br>
{{ form.client }}<br>
<label for="group">Group</label><br>
<select name="group" id="group_choice" onchange="get_products();">
{% for pgroup in groups %}
<optgroup label="{{pgroup}}">
{% for group in pgroup.groupproducts_set.all %}
{% if group in mygroups %}
<option value="{{group.id}}">{{group}}</option>
{% endif %}
{% endfor %}
</optgroup>
{% endfor %}
</select><br>
{{ form.product.label }}<br>
{{ form.product }}<br>
{{ form.cost.label }}<br>
{{ form.cost }}<br>
<input type="submit" value="Зберегти" />
</form>
{%endblock%}
{% block body_js%}
<script src="{% static "js/prototype.js" %}"></script>
<script>
function get_products(){
new Ajax.Request('/ajax_get_products/', {
method: 'get',
parameters: $H({'group_choice':document.getElementById('group_choice').value}),
onSuccess: function(transport) {
var e = document.getElementById('id_product')
if(transport.responseText)
e.update(transport.responseText)
}
}); // end new Ajax.Request
}
</script>
{% endblock %}
и урлы:
url(r'^special_promo_for_client/$', special_promo, name='add-special-promo'),
url(r'^ajax_get_products/$', 'main_sid.products.views.ajax_get_products'),
Проблема собственно в чем: в ajax запросе queryset выполняется нормально, но при return render_to_response(... дает ошибку
NoReverseMatch: NoRevers...+)/$']",)
Делал такое же в TemplateView, там все работало нормально, тут беда такая вот, может кто подскажет в чем проблема? Спасибо.