Копирование данных из учетной записи гостевого пользователя, удаление гостевого пользователя и отправка данных вошедшему или зарегистрированному пользователю с помощью чистого django
В настоящее время я работаю над сайтом электронной коммерции, и клиент может сделать заказ, не входя в систему, но я хочу, чтобы после того, как клиент добавит товар в корзину, когда он решит "Оформить заказ", он должен войти или зарегистрироваться. Я хочу, чтобы гостевая учетная запись пользователя была удалена, а данные карты были переданы вошедшему или зарегистрированному пользователю.
class Account(AbstractBaseUser):
""" My custom user manager """
phone_number = models.CharField(unique=True, max_length=11, validators=[MinLengthValidator(11)], blank=True)
session_key = models.CharField(max_length=40, null=True, blank=True)
USERNAME_FIELD = 'phone_number'
class OrderSummaryView(View):
def get(self, *args, **kwargs):
try:
order = Order.objects.get(user=self.request.user, ordered=False)
context = {
'object': order
}
return render(self.request, 'shop/ordersummary.html', context)
except:
""" here i can create Guest user account with session_key """
session_key = self.request.COOKIES['sessionid']
customer, created = Account.objects.get_or_create(session_key=session_key)
order = Order.objects.get(user=customer, ordered=False)
context = {
'object': order
}
return render(self.request, 'shop/ordersummary.html', context)
def CheckoutView1(request):
""" Here when the guest user wants to checkout, he/she has to login or register
And when they log in I want to remove the guest account and send the data to
the logged in or registered account. """
if not request.user.is_authenticated:
return redirect("login")
context = {}
if request.POST:
form = CheckOutUpdateForm(request.POST, instance=request.user)
if form.is_valid():
form.save()
return redirect('check_out2')
else:
order = Order.objects.get(user=request.user, ordered=False)
form = CheckOutUpdateForm(
initial={
"phone_number": request.user.phone_number,
"email": request.user.email,
"username": request.user.username,
"first_name": request.user.first_name,
"last_name": request.user.last_name,
"street_address": request.user.street_address,
"country": request.user.country,
"zip": request.user.zip,
}
)
context['account_form'] = form
context['order'] = order
return render(request, "shop/checkout1.html", context)