2014-10-23 3 views
0

다음 orderline formset 있습니다. 장고 Inlineformset - 두 번째 드롭 다운을 기반으로 JQuery 드롭 다운

two dropdowns

제품 드롭 다운 100 개 + 제품으로 구성됩니다으로

, 나는 제품 유형 선택에 따라 드롭 다운에서 사용할 수있는 제품을 필터링 할. 나는 웹에서 여러 솔루션과 예제를 보는 JQuery와 함께 작동하도록 노력해 왔지만 실제로 붙어있다.

이 문제를 해결하기위한 도움이나 조언을 보내 주시면 대단히 감사하겠습니다.

참조 할 수있는 관련 모델/뷰/양식 아래

Models.py

class OrderHeader(models.Model): 
    customer = models.ForeignKey(Customer) 
    orderheader_total_price = models.DecimalField(max_digits=10, decimal_places=2, null=True, blank=True, default=0) 

    def __unicode__(self): 
     return smart_unicode(self.pk) 


class OrderLine(models.Model): 
    orderheader = models.ForeignKey(OrderHeader) 
    product_type = models.ForeignKey(ProductType) 
    product = models.ForeignKey(Product) 

    def __unicode__(self): 
     return smart_unicode(self.pk) 

Views.py

def orderline_formset(request, id=None): 
    if id: 
     orderid = OrderHeader.objects.get(pk=id) 
    else: 
     orderid = OrderHeader() 

    OrderLineFormSet = inlineformset_factory(OrderHeader, OrderLine, OrderLineForm, extra = 1, can_delete=True) 
    helper = OrderLineFormSetHelper() 

    if request.method == 'POST': 
     form = OrderHeaderForm(request.POST, instance=orderid) 
     formset = OrderLineFormSet(request.POST,instance=orderid) 
     if form.is_valid() and formset.is_valid(): 
      form.save() 
      formset.save() 
      form = OrderHeaderForm(instance=orderid) 
      formset = OrderLineFormSet(instance=orderid) 
      messages.success(request, 'Order saved succesfully!') 
     else: 
      messages.error(request, 'Order save error, please check fields below') 
    else: 
     form = OrderHeaderForm(instance=orderid) 
     formset = OrderLineFormSet(instance=orderid) 

    return render_to_response("order-add.html", {'orderform' : form,'formset': formset, 'helper': helper}, 
           context_instance=RequestContext(request)) 

Forms.py

class OrderLineForm(forms.ModelForm): 

    def __init__(self, *args, **kwargs): 
     super(OrderLineForm, self).__init__(*args, **kwargs) 

    class Meta: 
     model = OrderLine 
     fields = ['product_type', 'product','material','orderline_product_price','orderline_quantity', 
        'orderline_total_price'] 
     labels = { 
      'orderline_quantity': ('Quantity'), 
      'orderline_product_price': ('Price'), 
      'orderline_total_price': ('Total'), 
     } 

class OrderLineFormSetHelper(FormHelper): 
    def __init__(self, *args, **kwargs): 
     super(OrderLineFormSetHelper, self).__init__(*args, **kwargs) 
     self.form_method = 'post' 
     self.template = 'bootstrap3/table_inline_formset.html' 
     self.render_required_fields = True 
     self.form_tag = False 

HTML

row0 
<select class="select form-control" id="id_orderline_set-0-product_type" name="orderline_set-0-product_type"> 
<select class="select form-control" id="id_orderline_set-0-product" name="orderline_set-0-product"> 
row1 
<select class="select form-control" id="id_orderline_set-1-product_type" name="orderline_set-1-product_type"> 
<select class="select form-control" id="id_orderline_set-1-product" name="orderline_set-1-product"> 
etc 

답변

1

Ajax를 사용하여 제품 유형 선택 값이 변경 될 때마다 특정 유형을 요청한 다음 결과를 제품 선택 항목에 추가해야합니다. 선택한 제품 유형의 'change'이벤트에 바인딩으로 시작한 다음 '$. post'를 사용하여 선택한 유형을 보내고 마지막으로 제품 선택에 결과를 추가하십시오.

+0

감사합니다 -이 자습서로 안내했습니다 - http://www.devinterface.com/blog/ko/2011/02/how-to-implement-two-dropdowns-dependent-on-each-other-using -django-and-jquery/ – phicon

+0

도와 드릴 수있어서 다행입니다! –

관련 문제