简体   繁体   English

DRF 中的 CART 功能

[英]CART functionallity in DRF

I am new to Django and currently setting up an ecommerce backend.我是 Django 的新手,目前正在设置电子商务后端。 I have created models, serializers, views and urls.我已经创建了模型、序列化程序、视图和 url。

Now, I need to set up a cart functionality, like create/update/delete/calculate_total and etc.现在,我需要设置购物车功能,例如创建/更新/删除/计算总计等。

The thing is I am totally lost.问题是我完全迷路了。 Don't know where to start and what to do next.不知道从哪里开始,下一步该做什么。 If you have a little time for quick guidance I'd be sincerely grateful.如果您有一点时间进行快速指导,我将不胜感激。

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)),
]

If I understand correctly you don't know where to move with your project and what feautures to add.如果我理解正确,您不知道将项目移至何处以及要添加哪些功能。 If thats the case then I recommend adding things like: viewed items, wishlist, different categories and sub-categories, recommended items, some sort of test payment method, search with multiple paramaters, questions for items, messages between users and staff, a chat bot, item reviews etc.如果是这样,那么我建议添加以下内容:查看的项目、愿望清单、不同的类别和子类别、推荐的项目、某种测试付款方式、使用多个参数进行搜索、项目问题、用户和员工之间的消息、聊天机器人,项目评论等。

My comment is too long for a comment so I post it here:我的评论太长了,所以我把它贴在这里:

If you are just starting out with webdev/django I would start with CRUD functions to each of your models just to get to know everything and then move on to your needs after that.如果您刚开始使用 webdev/django,我将从您的每个模型的 CRUD 功能开始,以便了解所有内容,然后再满足您的需求。

I believe that will simplify what you have to wrap your head around.我相信这将简化您必须绕开的内容。 And you might get some ideas for what you want to do while setting up the CRUD functionality.在设置 CRUD 功能时,您可能会对想要做什么有一些想法。

Add your models to your admin site so you can easily add some test data.将您的模型添加到您的管理站点,以便您可以轻松地添加一些测试数据。 Then you can start with making Generic display views to show that data, and then move on to Generic editing views and forms.然后您可以开始制作通用显示视图以显示该数据,然后继续进行通用编辑视图和 forms。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM