djangobb之forum.topics

Posted on 2018-03-28 08:04  王将军之武库  阅读(140)  评论(0编辑  收藏  举报

   看djangobb源代码时,看到view的show_forum(request, forum_id, full=True)时,对于topics = forum.topics.order_by('-sticky', '-updated')想不明白,forum对象没有topics属性字段啊,怎么可以这样访问呢?原来是models中的topics 有个forum字段,该字段是个外键,related_name='topics',所以从关联表可以直接通过关联名来访问。topics的posts也存在类似的问题。

class Topic(models.Model):
    forum = models.ForeignKey(Forum, related_name='topics', verbose_name=_('Forum'))
    name = models.CharField(_('Subject'), max_length=255)

class Post(models.Model):
    topic = models.ForeignKey(Topic, related_name='posts', verbose_name=_('Topic'))

view中的应用:

topics = forum.topics.order_by('-sticky', '-updated').select_related()

posts = topic.posts.all().select_related()

 

Copyright © 2024 王将军之武库
Powered by .NET 9.0 on Kubernetes