猿问

Django:订单对象取决于两个值

所以我有这个:


class Thread(models.Model):

    first_thread_notification = models.IntegerField(default=0)

    second_thread_notification = models.IntegerField(default=0)

我需要根据两个对象的总和对对象进行排序:


class Meta:

    ordering = ['-first_thread_notification' + '-second_thread_notification']

我知道这是不正确的,但我该怎么做呢?


编辑


class ManagerSum(models.Manager):

    Thread.objects.annotate(

       total=ExpressionWrapper(

       F('first_thread_notification') + F('-second_thread_notification'), 

       output_field=IntegerField(),

       )

    ).order_by('-total')


class Thread(models.Model):

    first_thread_notification = models.IntegerField(default=0)

    second_thread_notification = models.IntegerField(default=0)


    total_notifications = ManagerSum()


class Meta:

    ordering = ['-total_notifications']

它是否正确?


喵喔喔
浏览 108回答 1
1回答

温温酱

您可以使用 annotate通过 F 表达式对它们求和。from django.db.models import IntegerField, ExpressionWrapperThread.objects.annotate(    total=ExpressionWrapper(        F('first_thread_notification') + F('-second_thread_notification'),         output_field=IntegerField(),    )).order_by('-total')
随时随地看视频慕课网APP

相关分类

Python
我要回答