Как я могу отправить две формы в django

У меня есть шаблон, в котором я должен иметь 2 формы и обновлять их, мне удалось получить 2 формы в одном шаблоне, но когда я вношу изменения, ничего не происходит!

forms.py

class OrderManageForm(forms.ModelForm):

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

class CustomerForm(forms.ModelForm):
    address = forms.CharField(widget=forms.Textarea(attrs={'rows': 5}))
    class Meta:
        model = Customer
        fields = ['full_name', 'address', 'phone', 'city', 'email'

models.py

class Customer(models.Model):
    full_name = models.CharField(max_length=150)
    address = models.CharField(max_length=1500, null=True)
    phone = models.CharField(max_length=20)
    city = models.CharField(max_length=100)
    email = models.EmailField(null=True)

    def __str__(self):
            return self.full_name
class Order (models.Model):
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE,)
    quantity = models.IntegerField(default=1)
    status = models.TextField(choices=ORDER_STATUS, default='Pending')

    def __str__(self):
        return 'Order n°: ' + str(self.id)

views.py

def update_order(request, order_id):
    order = get_object_or_404(Order, id=order_id)
    cust = get_object_or_404(Customer, order__id=order_id)

    if request.method == 'POST':
        customer = CustomerForm(request.POST)
        form = OrderManageForm(request.POST)

        print(request.POST)

        if form.is_valid() and customer.is_valid():
            order = form.save(commit=False)
            customer = customer.save()
            order.customer = customer
            order.save()
        return redirect('orders')
    else:
        form = OrderManageForm(instance=order)
        customer = CustomerForm(instance=cust)

    return render(request, 'dashboard/order_details.html', {'form': form, 'customer': customer})

Я поместил 2 формы только в один тег формы в моем HTML шаблоне

Вам нужно передать экземпляры в формы так, чтобы формы могли обновить соответствующие записи:

def update_order(request, order_id):
    order = get_object_or_404(Order, id=order_id)
    cust = order.customer

    if request.method == 'POST':
        customer = CustomerForm(request.POST, instance=cust)
        form = OrderManageForm(request.POST, instance=order)

        if form.is_valid() and customer.is_valid():
            form.save()
            customer.save()
            return redirect('orders')
    # …

Вы должны перенаправлять только в том случае, если обе формы валидны, иначе вы не сможете увидеть ошибки, которые появляются на форме. Кроме того, вам следует удалить customer из fields из OrderManageForm:

class OrderManageForm(forms.ModelForm):

    class Meta:
        model = Order
        fields = ['product', 'quantity', 'status']  ← no customer
Вернуться на верх