Django过滤了order_by max count的相关模型

时间:2016-08-04 14:46:45

标签: python django

我知道count只能应用于IntegerField或FloatField但我已经为另一个包含hitcounts的模型创建了一个ForeignKey。现在我需要根据相关模型的最大计数来过滤结果,但我无法对其进行点击。

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

我们的想法是访问Hitcount字段匹配以按最大计数计算最大值和排序列表。以下是作为第三方可重复使用的应用程序djagno-hitcount安装的Hitcount模型。

class 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"

我需要使用不同的列表调用多个应用中的产品,并且在我的主页视图中,我尝试使用如下所示的过滤器选项:

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

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

并且几乎没有不同的过滤选项。我无法使它工作,所以建议将不胜感激。

0 个答案:

没有答案