2013-10-09 30 views
1
>>> a = group.objects.order_by('groupname') 
>>> print a 
[<group: beginner 593785332>, <group: beginner 903647323>, <group: blbrz 229225098>] 

我不希望有物體類似goupname,我想有不同的groupname爲每個對象:如何刪除order_by查詢中的重複對象?

[<group: beginner 593785332>, <group: blbrz 229225098>] 

我能做些什麼?

from django.db import models 
class accounts(models.Model): 
    twitterid = models.IntegerField() 
    credit = models.IntegerField() 
    activate = models.TextField() 
    ban  = models.TextField(blank=True) 
    others = models.TextField() 
    def __unicode__(self): 
     return u'%s' % (self.twitterid) 
    class Meta: 
     ordering = ['twitterid'] 

class group(models.Model): 
    groupname  = models.TextField() 
    accounts=models.ForeignKey(accounts) 
    def __unicode__(self): 
     return u'%s %s' % (self.groupname, self.accounts) 
+0

你可以用'group'模型向我們展示'models.py'嗎? –

+0

okey,補充。 @btoueg – omgbbqhax

+0

編輯答案 –

回答

2

如果你的數據庫後端是PostgreSQL的,你可以用一個QuerySet做到這一點:

a = group.objects.order_by('groupname').distinct('groupname') 

不幸的是,你正在使用SQLite的,所以你會最好做在python:

a = group.objects.order_by('groupname') 
groupnames = set() 
b = [] 
for item in a: 
    if a.groupname not in groupnames: 
    b.append(a) 
    groupnames.add(a.groupname) 
a = b 
+0

NotImplementedError:此數據庫後端不支持DISTINCT ON字段 – omgbbqhax

+0

如果您嘗試使用'a = group.objects.distinct('groupname')。order_by('groupname')',該怎麼辦? –

+0

不能正常工作DISTINCT不支持使用sqlite的SQlite。 – omgbbqhax