【发布时间】:2016-04-03 00:41:50
【问题描述】:
我正在尝试根据商店显示商店产品的尺寸和颜色:
store1: sizes=S,M,L colors=Red,blue
store2: sizes=L,Xl colors=yellow,green
我尝试将values_list 与group_by 一起使用,但它会引发错误
“ValuesListQuerySet”对象没有属性“group_by”
似乎group_by 不是 django 的一部分。我该怎么做才能将我的查询按上述方式分组?
models.py
商店包含的产品可以具有不同的尺寸和颜色。同样,一种产品可以在多个商店中销售。
class StoreProduct(models.Model):
product = models.ForeignKey('products.Product')
category = models.ForeignKey('products.Category')
store = models.ForeignKey('Store')
price = models.IntegerField(null=True , blank=True)
quantity = models.IntegerField(null=True , blank=True)
sizes = models.CharField(max_length=50 , null=True , blank=True)
colors = models.CharField(max_length=50 , null=True , blank=True)
def __unicode__(self):
return self.product.title
class Store(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL , null=True , blank=True)
StoreName = models.CharField(max_length=50 , default = '')
items = models.ManyToManyField('products.Product', through=StoreProduct)
brand = models.ForeignKey('products.Brand' , null=True , blank=True)
City = models.CharField(max_length=50 , default = '')
Area = models.CharField(max_length=50 , default = '')
Address = models.TextField(max_length=500)
MallName = models.CharField(max_length=50 , null=True , blank=True)
slug = models.SlugField(blank=True ,unique=True)
views.py
StoreProduct.objects.filter(product=productobj) \
.values_list('sizes', flat=True) \
.group_by('store')
【问题讨论】:
-
那么在上述场景中我如何根据商店对尺寸进行分组
-
有两种方法可以使用
aggregate和annotate但首先要考虑你的sql: SELECT sizes FROM StoreProduct GROUP BY store Do you think it's valid? -
为什么无效?那么如何根据商店显示尺寸?
-
一家商店包含的产品可以具有不同的尺寸和颜色……同样,一种产品可以在多个商店中购买……所以我们不能显示哪个商店的尺寸和颜色为特定产品?
-
我的数据库设计有什么问题吗?
标签: django database-design django-models django-views database-schema