Django Обновление формы с использованием метода __init__, не удалось отобразить значение 'instance' в отредактированной форме - PullRequest
0 голосов
/ 04 августа 2020

Я хотел бы отредактировать Django форму для конкретного экземпляра со значением PK. Мне нужно использовать метод init , чтобы ограничить раскрывающийся список. Однако я не знаю, как выполнить захват значения экземпляра в форме Django с помощью метода init .

Views.py

def updateOrder (request, pk):

order = Order.objects.get(id=pk)

form = OrderForm(request.POST, customer=request.user.customer.id, instance=order)

if request.method == 'POST':

    form = OrderForm(request.POST, customer=request.user.customer.id, instance=order)
    if form.is_valid():
        form.save()
        return redirect('customer_table')

context = {'form':form}
return render(request, 'create-order.html', context)

класс OrderForm (ModelForm):

class Meta:
    model = Order
    fields = ['contract', 'quantity', 'status']


def __init__(self, *args, **kwargs):
    customer = kwargs.pop('customer', None)
    super(OrderForm, self).__init__(*args, **kwargs)
    self.fields['contract'].queryset = Contract.objects.filter(customer__id=customer)
    self.fields['status'].queryset = Status.objects.filter(customer__id=customer)
...