Создание веб-сайта электронной коммерции. Теперь у меня есть форма модели адреса, в которой в качестве элемента внешнего ключа используется другая модель, т.е. модель биллинга.
Таким образом, проблема заключается в том, что форма адреса не сохраняется. Я попытался распечатать входные данные, чтобы увидеть, получает ли он на самом деле что-нибудь, но ничего
Ниже мой адрес модель
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')