2010-02-28 66 views
1

我的模型:如何在Django相關型號排序順序(通用關係)

隱私權|發佈廣告:

hits = models.PositiveIntegerField(default=0) 
object_pk = models.TextField('object ID') 
content_type = models.ForeignKey(ContentType, 
         verbose_name="content cype", 
         related_name="content_type_set_for_%(class)s",) 
content_object = generic.GenericForeignKey('content_type', 'object_pk') 

項目:

title = models.CharField(_('Title'), max_length=400) 
desc  = models.TextField(_('Description'), blank=True 

我想要排序或在HitCounter中擊中Item中的物品?我該怎麼辦?

回答

2

我認爲這應該工作:

items = Item.objects.annotate(hits=Sum('hitcounter__hits')).order_by('-hits') 

文件Django的聚集here

+0

隱私權|發佈廣告沒有定義 – anhtran

+0

泰伊隱私權|發佈廣告。 – dotty

+0

是您的第一款名爲'HitCounter'的款式,您仍然收到異常?你可以發佈消息嗎? – Zach

0

也許Meta選項order_with_respect_toordering幫助,如果你想擁有這個排序默認。

您的模型應該是這樣的,那麼:

class HitCounter: 
    # properties here 

    class Meta: 
     order_with_respect_to: 'content_object' # not sure if this really works 
     ordering: ['-hits'] 
+0

django.db.models.fields.FieldDoesNotExist:HitCounter(或其他)沒有名爲'content_object'的字段 –