rjust () внутри __str __ () не работает в Django - PullRequest
0 голосов
/ 21 февраля 2019

У меня есть класс модели с полями level и name (это касается уровней подкатегорий).

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

Когда я использую:

def __str__(self):
    return self.name.rjust((self.level-1) * 4, '-')

в модели Django, она не работает и продолжает показывать мне имя без черточек.

ЕслиЯ использую тот же код в чистом скрипте Python, он работает.Отладка показала, что self.level имеет правильное значение в функции __str__() Django.

Почему это не работает в Django?

Обновление: я исправил это с очевидным:

def __str__(self):
    indent = '-' * (self.level-1) * 4
    return indent + self.name

Однако вопрос, почему он не работает в Django, все еще остается открытым.

1 Ответ

0 голосов
/ 21 февраля 2019

Ваши 2 примера не совпадают.rjust не вставляет количество указанных вами символов заполнения, оно вставляет число, необходимое для заполнения этой общей длины.Если self.name достаточно долго, он будет возвращен без изменений

...