Django如何将TextField的前10个字符作为字符串?

问题描述 投票:0回答:2

请原谅我的问题,我是Python和Django的初学者。

我这里有一个class Response,它继承自models.Model。其中一个领域是response_content,一个TextField。我有一个函数__str__,它应该返回对象的字符串表示。这个字符串的第一部分是对象的id,然后是空格分隔符,然后是字段self.author_name,然后是管道分隔符,之后我想将self.response_content的前10个字符显示为字符串。我不想将整个self.response_context转储到字符串中,因为这是TextFieldmax_length=4000,所以它可以变得非常大!我想让这个字段的前10个字符显示为一个字符串,这样我就能看到并立即记住这些显示字符中response_content的其余部分。这就是我如何区分个别Responses。

我想用必要的表达式替换???。我还不太了解语法,所以请不要讨厌我提出这个问题。

这是我的models.py文件:

from django.db import models


# Create your models here.
class Response(models.Model):
    # Default field options: (null=False, blank=False)
    # Bu default, Django gives each model the following field:
    # id = models.AutoField(primary_key=True)
    #
    # The name of the author.
    author_name = models.CharField(max_length=32)
    # The author's email address.
    author_email = models.EmailField(max_length=254)
    # The date and time when this response was made.
    response_date = models.DateTimeField(auto_now_add=True)
    # The text content of the response.
    response_content = models.TextField(max_length=4000)

    # This is used for returning a string description of the Response for the
    # admin interface.
    def __str__(self):
        return (str(self.id) + " " + self.author_name + "|" + ???)
python django string
2个回答
2
投票

你可以用self.response_content[:10]切割字符串。

在你的情况下:

def __str__(self):
    return (str(self.id) + " " + self.author_name + "|" + self.response_content[:10])

0
投票

这可以通过两种方式完成

  1. 返回response_content只需切片如下。
def __str__(self):
        return (str(self.id) + " " + self.author_name + "|" + self.resonse_content[:10])
  1. 通过使用Django默认过滤器即truncatechars
from django.template.defaultfilters import truncatechars

class Response(models.Model):
...
    def __str__(self):
        return (str(self.id) + " " + self.author_name + "|" + truncatechars(self.resonse_content, 10))

© www.soinside.com 2019 - 2024. All rights reserved.