2010-02-28 7 views
1

Mes modèles:Comment trier l'ordre dans Django modèles associés (relations génériques)

HitCounter:

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

Article:

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

)

I vouloir trier ou der the items in Articles par hits dans HitCounter? Que devrais-je faire?

Répondre

2

Je pense que cela devrait fonctionner:

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

Doc pour l'agrégation Django here

+0

hitcounter n'est pas défini – anhtran

+0

Tye HitCounter. – dotty

+0

Votre premier modèle s'appelle-t-il "HitCounter" et vous recevez toujours une exception? Pouvez-vous poster le message? – Zach

0

Peut-être que les options méta order_with_respect_to et ordering aide, si vous voulez avoir cette commande par défaut.

Votre modèle ressemblerait à ceci alors:

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 (ou autre) n'a pas de champ nommé 'content_object' –

Questions connexes