小编for*_*mac的帖子

Django:如何在相关字段的相关字段上order_by

我正在使用annotate向对象添加属性,然后我可以将其用于order_by.但是,我想在关系的关系字段上进行注释.我知道我应该能够以某种方式使用双下划线符号到达现场,但我似乎无法绕过它.

以下是模型:

class Group(Taggable, Uploadable):
    name            = models.CharField(max_length=250, db_index=True)
    description     = models.TextField(max_length=5000, null=True,
                        blank=True, db_index=True)
    private         = models.BooleanField(default=False)
    members         = models.ManyToManyField(User, null=True,
                        related_name='members', through='GroupToUser')
    pending_members = models.ManyToManyField(User, null=True,
                        related_name='pending_members')
    admin           = models.ForeignKey(User, null=True)
    timestamp       = models.DateTimeField(auto_now_add=True)
    author          = models.ForeignKey(User, related_name='author')

class Discussion(Taggable, Uploadable):
    author      = models.ForeignKey(User)
    title       = models.CharField(max_length=250, db_index=True)
    description = models.TextField(max_length=5000, null=True,
                    blank=True, db_index=True)
    group       = models.ForeignKey(Group, null=True)
    timestamp   = models.DateTimeField(auto_now_add=True)

class DiscussionResponse(Uploadable):
    author     = models.ForeignKey(User)
    discussion = models.ForeignKey(Discussion)
    message    = models.TextField(max_length=5000)
    timestamp  = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

因此,讨论可以选择性地与组相关联,并且DiscussionResponses与讨论相关联.我想要做的是找到与组相关的任何讨论的最新DiscussionResponse(如果存在),并按此排序.

我已经达到了这个目的:

Group.objects.filter(some_filtering).distinct().annotate( …
Run Code Online (Sandbox Code Playgroud)

python django annotate sql-order-by

7
推荐指数
1
解决办法
2766
查看次数

标签 统计

annotate ×1

django ×1

python ×1

sql-order-by ×1