如何获取每种产品类型的前两个产品?

rin*_*nti 6 django django-models

假设我有两个看起来像这样的模型:

class ProductType(models.Model):
    product_type = models.CharField(max_length=100)

class Product(models.Model):
    name = models.CharField(max_length=200)
    slug = models.SlugField()

    product_type = models.ForeignKey(ProductType)

    score = models.PositiveIntegerField(default=0)

现在我想从每个ProductType中获取前两个产品(两个得分最高的产品).因此,如果我有手机,电脑,电视作为ProductTypes,我想要两个最好的手机,电脑,电视.

因为我甚至不知道如何在MySQL中执行此操作,所以我尝试搜索MySQL解决方案,但我找到的解决方案非常复杂,这并不是一件非常复杂的事情.

我倾向于为顶级产品制作一个自己的模型,并有一个cronjob来解决这个问题,但我想看看是否有一个更简单的解决方案.

Ada*_*dam 5

好吧,您可以在ProductType类中创建一个方法,该方法返回其产品的前两个结果:

class ProductType(models.Model):
    product_type = models.CharField(max_length=100)

    def TopTwoProducts(self):
        return self.product_set.order_by('-score')[0:2]
Run Code Online (Sandbox Code Playgroud)

然后你会做的事情如下:

for type in ProductType.objects.all():
    type.TopTwoProducts()
Run Code Online (Sandbox Code Playgroud)