@mynameiswisethanyesturday
Python developer

Как реализовать идентификацию анонимного пользователя?

Разрабатываю тестовые проект, интернет магазин на Django.
В данным момент добавление в корзину возможно только авторизированому пользователю.
Модель ссылается на пользователя модели из корбки django.

Как лучше реализовать функционал зарегестрированного пользователя и анонимного в процессе оформления заказа...?

Осуществит
class OrderProduct(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE, blank=True, null=True)
    ordered = models.BooleanField(default=False)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.IntegerField(verbose_name='Количество', default=1)

    def __str__(self):
        return f"{self.quantity} of {self.product.name}"

    def get_total_item_price(self):
        return self.quantity * self.product.price

    def get_total_discount_item_price(self):
        return self.quantity * self.product.discount_price

    def get_total_amount_saved(self):
        return self.get_total_item_price() - self.get_total_discount_item_price()

    def get_final_price(self):
        if self.product.discount_price:
            return self.get_total_discount_item_price()
        return self.get_total_item_price()


class Order(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL,
                             on_delete=models.CASCADE)
    products = models.ManyToManyField(OrderProduct)
    start_date = models.DateTimeField(auto_now_add=True)
    ordered_date = models.DateTimeField()
    ordered = models.BooleanField(default=False)

    def __str__(self):
        return str(self.user)

    def get_total(self):
        total = 0
        for order_product in self.products.all():
            total += order_product.get_final_price()
        return total
  • Вопрос задан
  • 74 просмотра
Решения вопроса 1
@bacon
варианты
1. хранить корзину на стороне клиента в куках, локалсторадж или где там еще можно
3. хранить корзину на стороне сервера в request.session
2. сделать модель где вместо user, использовать sessionid
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 180 000 ₽
Appboxo Алматы
от 830 000 до 1 250 000 ₸
Verme Москва
от 120 000 ₽
19 янв. 2021, в 00:06
1000 руб./за проект
18 янв. 2021, в 22:36
50000 руб./за проект