Django сохранение формы модели - PullRequest
0 голосов
/ 26 апреля 2020

Создание веб-сайта электронной коммерции. Теперь у меня есть форма модели адреса, в которой в качестве элемента внешнего ключа используется другая модель, т.е. модель биллинга.

Таким образом, проблема заключается в том, что форма адреса не сохраняется. Я попытался распечатать входные данные, чтобы увидеть, получает ли он на самом деле что-нибудь, но ничего

Ниже мой адрес модель

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')
...