【问题标题】:How to index into a django model's attribute?如何索引到 django 模型的属性?
【发布时间】:2021-04-06 07:03:00
【问题描述】:

我正在写博客,并且有一篇文章的模型:

class Article(models.Model):
    title       = models.CharField(max_length=200)
    author      = models.CharField(max_length=120)
    content     = models.TextField(db_index=True)
    committee   = models.CharField(max_length=50)
    likes       = models.IntegerField(default=0)

我正在研究一种截断帖子的方法,需要访问内容属性的前几个字符。我试过 {{article.content[40]}} (文章已在我的视图函数中作为上下文传入)但抛出了这个错误:

无法解析余数:来自“article.content[0:40]”的“[0:40]”

有谁知道如何索引这样的属性?谢谢!

【问题讨论】:

    标签: django database indexing blogs


    【解决方案1】:

    您可以使用|slice template filter [Django-doc]:

    {{ article.content<b>|slice:":40"</b> }}

    不过,使用|trucatechars template filter [Django-doc] 可能会更好:

    如果字符串长于指定的字符数,则截断该字符串。截断的字符串将以可翻译的省略号字符 ("…") 结尾。

    因此,如果已被截断,这将在字符串末尾添加一个省略号 (...),因此您可以将其用于:

    {{ article.content<b>|truncatechars:40</b> }}

    【讨论】:

    • 谢谢,我会牢记这一点!
    【解决方案2】:

    你应该能够做到这一点

    `

    class Article(models.Model):
        title       = models.CharField(max_length=200)
        author      = models.CharField(max_length=120)
        content     = models.TextField(db_index=True)
        committee   = models.CharField(max_length=50)
        likes       = models.IntegerField(default=0)
    
        get_content(self):
            return self.content[:40]
    

    `

    然后在你的模板中

    {{article.get_content}}
    

    【讨论】:

    • 谢谢!我会试一试!
    猜你喜欢
    • 1970-01-01
    • 2014-06-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-09
    • 2011-12-29
    • 2017-08-05
    相关资源
    最近更新 更多