如何获得最受欢迎的产品数量?

时间:2018-05-03 09:14:20

标签: django django-models django-forms django-rest-framework django-views

嗨,实际上我是django Restframe工作的新手。 在这里我提到了我的模型我的问题是什么?我不知道如何存储每个产品的数量。最受欢迎的产品应该显示在前端。

MODEL.PY

class Products(models.Model):
   name = models.CharField(max_length=100)
   image = models.CharField(max_length=10, null=True)
   categories =  models.ArrayModelField(
       model_container=Category,
       model_form_class=CategoryForm
   )
   specifications =  models.ArrayModelField(
       model_container=Specifications,
       model_form_class=SpecificationsForm
   )
   description = models.CharField(max_length=500)
   reviews =  models.ArrayModelField(
       model_container=Reviews,
       model_form_class=ReviewsForm
   )
   drizzly = models.BooleanField(default=False)
   complete = models.BooleanField(default=False)
   comment = models.CharField(max_length=500)
   count = models.IntegerField()

3 个答案:

答案 0 :(得分:0)

如果您使用的是基于类的视图,则可以执行以下操作:

Class ProductsDetailView(DetailView):
    model = Products

    def get(self, **kwargs):
        self.object.count += 1
        self.object.save()
        return super(ProductsDetailView, self).get(**kwargs)

要按计数排序,请在模型中包含

Class Meta:
    ordering = ['count']

答案 1 :(得分:0)

最好的方法是使用 atomic operations

from django.db.models import F

Products.objects.filter(name = name).update(count = F('count')+1)

注意:您必须将name字段设置为unique或按其他unique字段进行过滤。

答案 2 :(得分:0)

这对我有用:

Class ProductsDetailView(DetailView): 型号=产品

def get(self, request, *args, **kwargs):       
    object = self.get_object()
    object.count = int(object.count) + 1
    object.save()
    return super(ProductsDetailView, self).get(self, request, *args, **kwargs)