2012-05-10 70 views
0

我正在使用Django 1.3,並希望使用'group by'類查詢來獲取對象數組。下面是一些簡單的代碼:在Django 1.3中獲取一個groupped_by對象列表

class Product(models.Model): 
    id  = models.IntegerField(primary_key=True) 
    active = models.BooleanField() 
    name  = models.CharField(blank=True, max_length=500) 
    slug  = models.SlugField(blank=True, max_length=500) 
    program = models.CharField(blank=True, max_length=500) 
    number = models.CharField(blank=True, max_length=500) 
    image = ... 
    url  = ... 

>>> p = Product.objects.all().some_group_functions('slug') 
>>> p 
[<Product: Abelly Hat>, <Product: Abelt Bracelet>, <Product: Abigail Earrings>, <Product: Abigail Earrings>'...(remaining elements truncated)...'] 

如何讓只有在我的變量p的獨特塞的對象?

有什麼方法可以將產品對象作爲列表嗎?

編輯:可能的解決方法 雖然它做什麼,我想要它做的,請讓我知道,如果你有什麼更好的解決方案:

在我看來

,邏輯得到一個對象的QuerySet:

products = Product.objects.filter(*whatever filter you like*) 
products = remove_duplicates(products, 'slug') 

而且remove_duplicates功能

def remove_duplicates(seq, attr=None): 
    seen = {} 
    result = [] 
    for item in seq: 
     if attr: 
      tmpattr = getattr(item, attr) 
     else: 
      tmpattr = item 

     if tmpattr in seen: continue 
     seen[tmpattr] = 1 
     result.append(item) 
return result 
+0

你是指什麼對象w /獨特的slu??它是否排除共享slu objects的對象? – okm

+0

我有對象具有相同的slu it,它應該只返回獨特的slu gs ,所以返回的對象列表應該只包含具有獨特的slu objects的對象。我剛剛找到了一種解決方法,現在將其發佈 – Hussam

回答

0

由於沒人接了,我猜次ere沒有比升級到支持函數distinct([fields])的django 1.4更簡單的方法; django 1.3只支持函數distinct(),不帶參數。

我試過升級,不過django-cms直到今天還不支持django 1.4。我必須堅持這裏解釋的刪除重複函數:(

相關問題