现在创建一个电子商务网站,我有一个地址模型表格,其中有另一个模型作为外键元素,即计费模型。
所以这里的问题是“地址”表单没有保存,我尝试打印输入数据以查看它是否实际上什么也没收到
下面是我的地址模型
class Address(models.Model):
billing_profile = models.ForeignKey(BillingProfile, on_delete=models.CASCADE)
address_type = models.CharField(max_length=120, choices=ADDRESS_TYPES)
address_line_1 = models.CharField(max_length=120)
address_line_2 = models.CharField(max_length=120, null=True, blank=True)
country = models.CharField(max_length=120, default='South Africa')
province = models.CharField(max_length=120)
postal_code = models.CharField(max_length=120)
def __str__(self):
return str(self.billing_profile)
下面是我的地址表格
from django import forms
from .models import Address
class AddressForm(forms.ModelForm):
class Meta:
model = Address
fields = [
'address_line_1',
'address_line_2',
'country',
'province',
'postal_code',
]
以下是我的HTML呈现页面
{% if not object.shipping_address %}
<div class="row">
<div class="col-md-6 mx-auto col-10">
<p class='lead'>Shipping Adress</p><br>
{% url 'checkout_address' as checkout_address %}
{% include 'addressForm.html' with form=address_form next_url=request.build_absoulute_uri
adress_type='shipping' action_url=checkout_address %}
</div>
</div>
</div>
{% else %}
<h1>Checkout</h1>
<p>Cart Total: {{ object.cart.total }}</p>
<p>Shipping Total: {{ object.shipping_total}}</p>
<p>Order Total: {{ object.total }}</p>
这是地址视图
from django.shortcuts import render, redirect
from .forms import AddressForm
from django.utils.http import is_safe_url
from Billing.models import BillingProfile
def Checkout_address_create_view(request):
form = AddressForm(request.POST or None)
context = {
'form': form
}
next_ = request.GET.get('next')
next_post = request.GET.get('next')
redirect_path = next_ or next_post or None
if form.is_valid():
print(request.POST)
instance = form.save(commit=False)
billing_profile, billing_profile_created =
BillingProfile.objects.new_or_get(request)
if billing_profile is not None:
instance.billing_profile = billing_profile
instance.address_type = request.POST.get('address_type', 'shipping')
instance.save()
else:
print('No billing profile')
return redirect('carts/checkout.html')
if is_safe_url(redirect_path, request.get_host()):
return redirect(redirect_path)
else:
return redirect('carts/checkout.html')
return redirect('carts/checkout.html')