嗨,实际上我是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()
答案 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)