Джанго, как получить первые 10 символов TextField в виде строки? - PullRequest
0 голосов
/ 10 марта 2019

Прошу прощения за мой вопрос, я новичок в Python и Django.

У меня есть class Response здесь, который наследуется от models.Model.Одно из полей - response_content, TextField.У меня есть функция __str__, которая должна возвращать строковое представление объекта.Первая часть этой строки - это id этого объекта, затем разделитель пробелов, затем поле self.author_name, затем разделитель каналов, затем я хочу отобразить первые 10 символов self.response_content в виде строки.Я не хочу помещать весь self.response_context в строку, потому что это TextField с max_length=4000, поэтому он может стать очень большим!Я хочу, чтобы только первые 10 символов этого поля отображались в виде строки, чтобы я мог просто посмотреть и сразу же запомнить, что осталось от response_content из этих отображаемых символов.Вот как я могу отличить отдельного Response с.

Я хочу заменить ??? необходимым выражением.Я еще недостаточно хорошо знаю синтаксис, поэтому, пожалуйста, не ненавидите меня за этот вопрос.

Это мой 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 + "|" + ???)

Ответы [ 2 ]

2 голосов
/ 10 марта 2019

Вы можете нарезать строку с помощью self.response_content[:10].

В вашем случае:

def __str__(self):
    return (str(self.id) + " " + self.author_name + "|" + self.response_content[:10])
0 голосов
/ 10 марта 2019

Это можно сделать двумя способами

  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))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...