I know that count only can be applied for an IntegerField or FloatField but 
I've created a ForeignKey to another model which contains hitcounts. Now I 
need to filter results by max count from related model and I couldn't dot 
it.


models.py:


class Product(models.Model):
    title = models.CharField(max_length=120)
    description = models.TextField(blank=True, null=True)
    price = models.DecimalField(decimal_places=2, max_digits=20)
    active = models.BooleanField(default=True)
    categories = models.ManyToManyField('Category', blank=True)
    default = models.ForeignKey('Category', related_name='default_category', 
null=True, blank=True)
    hits = models.ForeignKey(HitCount)

    objects = ProductManager()

    class Meta:
        ordering = ["-title", '-hits']


The idea is to access Hitcount field hits to count max value and sort
 list by max count. Below is Hitcount model installed as third party 
reusable app djagno-hitcount.

 HitCount(models.Model):
    hits = models.PositiveIntegerField(default=0)
    modified = models.DateTimeField(auto_now=True)
    content_type = models.ForeignKey(ContentType, 
related_name="content_type_set_for_%(class)s", on_delete=models.CASCADE)
    object_pk = models.PositiveIntegerField('object ID')
    content_object = GenericForeignKey('content_type', 'object_pk')

    objects = HitCountManager()

    class Meta:
        ordering = ('-hits',)
        get_latest_by = "modified"
        verbose_name = _("hit count")
        verbose_name_plural = _("hit counts")
        unique_together = ("content_type", "object_pk")
        db_table = "hitcount_hit_count"


I need to call products in multiple apps with different list and in 
my mainpage views I am trying to use filter option like below:

from django.db.models import Max, Sum, Count
product1 = Product.objects.all().annotate(hits=Count('-hits__hits'))[:6]

or

product1 = Product.objects.all().order_by('-hits__hits')[:6]

and with few different filter options. I couldn't make it work so advise 
would be appreciated. 

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/39e610bf-0558-4a8d-8491-f9324d8986f1%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to