Search code examples
pythonpython-2.7django-1.8inline-formset

How to filter dropdown list in inline formset


My inline formset contains a dropdon list with avaible items. I'm trying to filter this list by date. Unfortunately, the queryset I provided does not limit the choices:

def order(request, date):
    new_order = get_object_or_404(Order, date=date, user=None)
    new_items = Order_items.objects.filter(order__date=date, quantity=0)
    OrderFormset = inlineformset_factory(Order, Order_items, extra=0, fields='__all__')
    ordering_user = request.user
    if request.method == 'POST':
        form = OrderForm(request.POST, instance=new_order)
        formset = OrderFormset(request.POST, instance=new_order, queryset=Order_items.objects.filter(order__date=date, quantity=0))
        [...]
    else:
        form = OrderForm(instance=new_order)
        formset = OrderFormset(instance=new_order, queryset=Order_items.objects.filter(order__date=date, quantity=0))
    [...]

Instead, it displays every record available in the table Order_items. What should I change to make it work?


Solution

  • Alright, the solution is a simple query added just below the lines:

    for n in formset:
                n.fields['product'].queryset = Menu.objects.filter(date=date)