2015-12-21 57 views
0

這裏是models.py無法獲得不同結果的查詢集

class Product(models.Model): 

    brand = models.ForeignKey(Brand , related_name='products') 
     category = models.ForeignKey('Category', verbose_name='categories', related_name='products' , default='') 
     parent = models.ForeignKey('self' , related_name = 'children' , null=True , blank=True) 
     title = models.CharField(max_length=500) 

class StoreProduct(models.Model): 
     product = models.ForeignKey('products.Product') 
     category = models.ForeignKey('products.Category') 
     store = models.ForeignKey('Store') 

class Store(models.Model): 
    user = models.ForeignKey(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

queryset = StoreProduct.objects.all().distinct() 

多個存儲可以包含相同的產品和但他們應該在產品一旦出現網格頁面。
獨特的查詢不起作用。
如何在上述情況下顯示不同的值?
由於提前

+0

什麼是 「不工作」 意味着什麼?錯誤?結果無效? – Sayse

+0

你使用了哪個數據庫?如果你是在Postgres上,你可以使用'distinct('store')' –

+0

我使用的是sqlite3 ...我試着使用不同的('product__title')....但它引發錯誤,不適用於db –

回答

1

如果您正在使用PostgreSQL,指定區分級別:

queryset = StoreProduct.objects.distinct('product') 

你可以結合values()也用它,order_by()等:

queryset = StoreProduct.objects.values('product').distinct() 

我會建議以下解決方案,但不是解決方案;要麼你選擇PosgreSQL作爲數據庫,特別是最新的Django版本將會提供更多對複雜數據結構的內置支持,或者你可以嘗試讓你自己的過濾器如下(但是如果你有大數據集,這將非常糟糕):

store_product_id_list = StoreProduct.objects.values('product').distinct() 
store_product_list = [] 
for obj in store_product_id_list: 
    store_product_obj = StoreProduct.objects.filter(product_id=obj.get('product')).first() 
    store_product_list.append(store_product_obj) 

檢查distinct更多的例子

+0

'NoneType'對象沒有'first'屬性 –

+0

[{'product':1},{'product':2},{'product':3}] –

+0

必須爲產品ID –