Контакты
Местоположение
Таджикистан, Таджикистан, Душанбе

Наибольший вклад в теги

Все теги (2)

Лучшие ответы пользователя

Все ответы (4)
  • Альтернативные варианты реализации корзины в DRF?

    EtherDaler
    @EtherDaler
    3k MMR
    Создаете модель корзины, связываете ее с моделью пользователя. Потом создаете модель товары корзины и связываете ее с моделью корзины. Важно указать в ForeignKey полях аргумент related_name, чтобы можно было обращаться из родительской модели к дочерней.
    class Basket(models.Model):
        user = models.ForeignKey(User, on_delete=models.CASCADE, related_name='basket')
    
    class BasketProducts(models.Model):
        basket= models.ForeignKey(Basket, on_delete=models.CASCADE, related_name='basket_products')
        products = models.ManyToManyField(Products, on_delete=models.CASCADE, related_name="basket_products")
    
    class Products(models.Model):
        name = models.CharField(max_length=255)
       '''''

    Потом сериализируете модели
    class ProductsSerializer(serializers.ModelSerializer):
        class Meta:
            model = Products
            fields = ("__all__")
    
    
    class BsketProductsSerializer(serializers.HyperlinkedModelSerializer):
        products = ProductsSerializer(many=True)
        class Meta:
            model = BasketProducts
            fields = ('basket','products')
    
    class BasketSerializer(serializers.HyperlinkedModelSerializer):
        basket_products = BsketProductsSerializer(many=True)
        class Meta:
            model = Basket
            fields = ('user' , 'basket_products ')
    
    class UserSerializer(serializers.HyperlinkedModelSerializer):
        basket = BasketSerializer(many=True)
        class Meta:
            model = User
            fields = ('id', 'phone','email' ,'basket')


    Далее во вьюхе в вашей функции API указываете permission_class как isAuthenticated, потом получаете корзину пользователя командой request.user.basket . В запросе в хедере указываете Authorization и токен.
    Ответ написан
    Комментировать