在模型表里自定义方法,来实现功能!


发布时间:2019-02-15 13:08    作者: Uncle Hui   已过去:1 年,3 月   阅读总量:159 已被赞:0


class Board(models.Model):
    '''板块模型'''
    name = models.CharField('板块名字',max_length=30,unique=True)
    description = models.CharField('板块描述',max_length=100)

    class Meta:
        verbose_name = '板块管理'
        verbose_name_plural = verbose_name
    def __str__(self):
        return self.name
    #这里定义一个方法,用于统计回复模型里属于同一个模块的回复数量
    def get_posts_count(self):
        #返回:回复表.objects.条件塞选(Post这表里它关联Topic表的字段叫topic,
        # (双下划线)__board(Topic表关联Board的字段叫board等于了自身,算出符合条件的个数
        return Post.objects.filter(topic__board=self).count()
    #定义个方法,用于获取本模块的最后一条回复帖子
    def get_last_post(self):
        return Post.objects.filter(topic__board=self).order_by("-created_at").first()

模板里使用:

<td    class="align-middle">{{ board.get_posts_count}}</td>
                <td    class="align-middle">
                    {%with post=board.get_last_post%}
                        {% if post %}
                            <small>
                                <a    href="#">
                                    发帖者:{{post.created_by.username}}时间:{{post.created_at}}
                                     <p>回复主题:{{ post.topic.subject }}</p>
                                </a>
                            </small>
                        {% else %}
                        <small>
                            <span>暂无回复,欢迎抢占沙发!</span>
                        </small>
                         {% endif %}
                    {%    endwith    %}
                </td>

点赞

0




登陆后方可评论