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.