2010-02-28 3 views
1

Мои модели:Как порядок сортировки в Django связанных моделей (Generic отношения)

счетчик посещений:

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 

)

I хотите сортировать или в пунктах Item по хитам в HitCounter? Что мне делать?

ответ

2

Я думаю, что это должно работать:

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

Doc для агрегации Джанго here

+0

счетчик посещений не определен – anhtran

+0

Тая счетчик посещений. – dotty

+0

Является ли ваша первая модель под названием «HitCounter», и вы все еще получаете исключение? Можете ли вы опубликовать сообщение? – Zach

0

Может быть, мета варианты order_with_respect_to и ordering помощь, если вы хотите иметь этот порядок по умолчанию.

Ваша модель будет выглядеть следующим образом, то:

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' –

Смежные вопросы