Функциональность КОРЗИНЫ в DRF

#python #django #django-models #django-rest-framework #django-views

#питон #джанго #django-модели #django-rest-framework #django-представления

Вопрос:

Я новичок в Django и в настоящее время настраиваю серверную часть электронной коммерции. Я создал модели, сериализаторы, представления и URL-адреса.

Теперь мне нужно настроить функциональность корзины, например create / update / delete / calculate_total и т.д.

Дело в том, что я совершенно потерялся. Не знаю, с чего начать и что делать дальше. Если у вас есть немного времени для быстрого руководства, я был бы искренне благодарен.

 class Cart(models.Model):
    owner = models.OneToOneField(User, on_delete=models.CASCADE, null=True, blank=True)
    number_of_items = models.PositiveIntegerField(default=0)
    total = models.DecimalField(default=0.00, max_digits=5, decimal_places=2)


    def __str__(self):
        return "User: {}, items in cart: {}".format(self.owner, self.number_of_items)



class CartItem(models.Model):
    cart = models.ForeignKey(Cart, on_delete=models.CASCADE, default=None)
    item = models.ForeignKey(Product, on_delete=models.CASCADE)
    quantity = models.PositiveIntegerField()

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



class CartSerializer(serializers.ModelSerializer):
    owner = serializers.StringRelatedField()
    class Meta:
        model = Cart
        fields = '__all__'


class CartItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = CartItem
        fields = "__all__"



class CartView(viewsets.ModelViewSet):
    serializer_class = CartSerializer
    queryset = Cart.objects.filter()

    def perform_create(self, serializer):
        serializer.save(owner=self.request.user)

class CartItemView(viewsets.ModelViewSet):
    serializer_class = CartItemSerializer
    queryset = CartItem.objects.all()



router = DefaultRouter()

router.register(r'view', CartView)
router.register(r'item', CartItemView)

urlpatterns = [
    path('', include(router.urls)),
]
 

Ответ №1:

Мой комментарий слишком длинный для комментария, поэтому я размещаю его здесь:

Если вы только начинаете с webdev / django, я бы начал с функций CRUD для каждой из ваших моделей, просто чтобы узнать все, а затем перейти к вашим потребностям после этого.

Я считаю, что это упростит то, что вам нужно обдумать. И у вас могут появиться некоторые идеи о том, что вы хотите сделать, настраивая функциональность CRUD.

Добавьте свои модели на свой сайт администратора, чтобы вы могли легко добавлять некоторые тестовые данные. Затем вы можете начать с создания общих представлений отображения для отображения этих данных, а затем перейти к общим представлениям редактирования и формам.

Комментарии:

1. Большое спасибо. Я буду использовать это в качестве отправной точки

Ответ №2:

Если я правильно понимаю, вы не знаете, куда двигаться с вашим проектом и какие функции добавить. Если это так, то я рекомендую добавлять такие вещи, как: просмотренные товары, список пожеланий, различные категории и подкатегории, рекомендуемые товары, какой-то тестовый способ оплаты, поиск по нескольким параметрам, вопросы к товарам, сообщения между пользователями и персоналом, чат-бот, обзоры товаров и т. Д.

Комментарии:

1. Спасибо за ответ, но дело в том, что я хочу обновить корзину данными, которые я получу из запроса.

2. Можете ли вы опубликовать свои мнения?