Django按模型方法过滤,种类

时间:2015-07-27 16:48:37

标签: python django django-models django-orm

有意义的是,查询集不能通过模型​​方法过滤,查询集只能在数据库上过滤,数据库也不知道模型方法。

话虽这么说,有必要做一些类似的事情吗?

class Topic(models.Model):
    "An individual discussion post in the forum"
    created = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(User)
    title = models.CharField(max_length=60)
    content = models.CharField(max_length=2000)
    view_count = models.PositiveIntegerField(default=0, editable=False)

    def last_reply(self):
        "latest reply for a forum topic"
        if self.replies.all():
            return self.replies.latest('created')

        return None


class TopicReply(models.Model):
    "A reply to a discussion topic or to another reply"
    created = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(User)
    topic = models.ForeignKey(Topic, related_name="replies")
    content = models.CharField(max_length="1000")
    parent_reply = models.ForeignKey("self", null=True, blank=True, related_name='replies')

以下是我的两个模型,我想要做的是按照上次回复日期订购主题。使用查询集我尝试使用return sorted(queryset, key=lambda t:t.last_reply())在内存中进行排序,但是在Python 3中存在空值和错误。而不是在last_reply方法中返回None,我尝试返回空字符串或TopicReply.objects.none()但排序的函数不喜欢其中任何一个。

0 个答案:

没有答案