Как мне запросить пользователя и сохранить его в поле Foreignkey модели
Я уже некоторое время занимаюсь этим, но не могу найти способ установить 'customer' в поле foreignkey модели 'ShippingAddress', как мне запросить поле customer, чтобы вместе с данными о доставке через форму, клиент сохранялся и в поле foreignkey. заранее спасибо!
**models.py**
class Customer(models.Model):
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, blank=True, null=True)
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
email = models.EmailField(max_length=150)
class ShippingAddress(models.Model):
customer = models.ForeignKey(Customer, on_delete=models.SET_NULL, blank=True, null=True)
address_one = models.CharField(max_length=200)
address_two = models.CharField(max_length=200)
...
**views.py**
def checkout(request):
if request.method == 'POST':
form = ShippingForm(request.POST)
customer = request.user.customer
if form.is_valid():
# how to get the customer and send it back to the shippingmodel form
user = ShippingAddress.objects.get(customer=customer)
form.save()
return redirect('store:checkout_shipping')
else:
form = ShippingForm()
else:
form = ShippingForm()
context = {"form": form}
return render(request, 'store/checkout.html', context)
ShippingAddress.objects.get(customer=customer)
Возвращается ShippingAddress, но
user = models.OneToOneField(CustomUser, on_delete=models.CASCADE, blank=True, null=True)
требует наличия CustomUser. Они несовместимы, поэтому их нельзя назначать.
Но вы уже получаете пользователя:
customer = request.user.customer
Просто немного уменьшите это:
user = request.user
теперь у вас есть объект пользователя.
Я предполагаю, что вы правильно настроили класс CustomUser в настройках Django.