类型错误在/accounts/add_rent_payment/1363902a-c341-4883-84ee-1e12156b0381

问题描述 投票:0回答:0

我有两个模型,即 Receipt 和 RentPayment。我想要实现的是创建一个收据,我想重定向到一个 RentPayment 表单,其初始值是收据字段中最近保存的收据。

#模型

class Receipt(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    receipt_number = models.CharField(max_length=4, null=True, blank=True)
    property = models.ForeignKey(Property, null=False, blank=False, on_delete=models.CASCADE)
    month_paid = models.CharField(max_length=15,null=True,blank=True,choices=MONTHS)
    balance_due = models.DecimalField(max_digits=5, decimal_places=2)
    total_rent = models.DecimalField(max_digits=7, decimal_places=2, null=True,blank=True)

class RentPayment(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    receipt = models.ForeignKey(Receipt, null=True, blank=True, on_delete=models.CASCADE)
    property = models.ForeignKey(Property, null=True, blank=True, on_delete=models.SET_NULL)
    amount_paid = models.DecimalField(max_digits=7, decimal_places=2)
    payment_date = models.DateField(auto_now=True)
    next_payment_due = models.DateField(auto_now=True)

#浏览量

def createReceipt(request,pk):  
    property_entity = Property.objects.get(id=pk)
    form = ReceiptForm(initial={'property' :property_entity})

    if request.method == 'POST':
        form = ReceiptForm(request.POST, initial={'property' :property_entity})
        if form.is_valid():
            receipt_obj = form.save(commit=False)
            receipt_obj.property = property_entity
            receipt_obj.save()

            return redirect('add_rent_payment', receipt_pk=receipt_obj.id)
    else:
        ReceiptForm()

    context = {'property_entity' :property_entity,
            'form' :form
            }

    return render(request,"accounting/receipt.html",context)

def add_rent_payment(request, pk):
    receipt = Receipt.objects.get(id=pk)
    if request.method == 'POST':
        rent_payment_form = RentPaymentForm(request.POST)
        if rent_payment_form.is_valid():
            rent_payment = rent_payment_form.save(commit=False)
            rent_payment.receipt = receipt
            rent_payment.save()
            return redirect('property_list')
    else:
        rent_payment_form = RentPaymentForm()
    context = {
        'receipt': receipt,
        'rent_payment_form': rent_payment_form,
    }
    return render(request, 'accounting/add_rent_payment.html', context)

#网址

urlpatterns = [
    path('receipt/<str:pk>', views.createReceipt, name="receipt"),
    path('add_rent_payment/<str:receipt_pk>', views.add_rent_payment, name="add_rent_payment")
]
django django-models django-forms django-urls django-url-reverse
© www.soinside.com 2019 - 2024. All rights reserved.