【发布时间】:2014-10-23 20:10:58
【问题描述】:
我有以下订单表单集。
由于产品下拉列表将包含 100 多种产品,我想根据产品类型选择过滤下拉列表中可用的产品。我一直在尝试使用 JQuery 来解决这个问题,查看网络上的几个解决方案和示例,但我真的被卡住了。
任何有关实现此功能的帮助或指示将不胜感激。
下面有相关的Models/Views/Forms供参考。
模型.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
【问题讨论】:
标签: javascript jquery python django drop-down-menu