Как я могу добавить заполнение полей в Django admin? - PullRequest
0 голосов
/ 17 мая 2019

Я использую Django Admin для доступа к данным некоторых проектов.Чтобы иметь возможность иметь правильное представление, у меня есть некоторый класс:

class Whatever(models.Model):
    user = models.ForeignKey(User, blank=True, null=True, on_delete=models.CASCADE)
    date = models.DateTimeField(blank=False, null=False, default=datetime.utcnow)
    view = models.CharField(max_length=256, blank=False, null=False)

К которому я добавил метод __str__ с определенным форматированием, которое содержит {:X} отступ для установкиX символов в поле:

    def __str__(self):
        username = self.user.username if self.user else ""
        return "{:25} - {:30} - {:32}".format(self.user., self.view, self.date)

Однако в администраторе Django все отступы игнорируются, поэтому все, что я получил, это набор строк в формате:

bla - my_view - 2019-05-14 17:18:57.792216+00:00
another_user - another_view - 2019-05-14 16:05:27.644441+00:00

Без каких-либо дополнений, хотя я хотел бы что-то вроде:

bla            - my_view        - 2019-05-14 17:18:57.792216+00:00
another_user   - another_view   - 2019-05-14 16:05:27.644441+00:00

В обычном Python, если я делаю:

class M(object): 

     def __init__(self): 
         self.a = "hola"
         self.b = "adeu"

     def __str__(self): 
         return "{:25} - {:30}.".format(self.a, self.b) 

Хорошо работает:

>>> print(m)                                                                            
hola                      - adeu                          .

Я в Python 3.6.8 и Django 2.1.5.

1 Ответ

1 голос
/ 17 мая 2019

Администратор Django не изменяет представление вашей модели. Отсечение пробелов происходит, когда ваш браузер отображает текст. Таким образом, чтобы форсировать неразрывные пробелы, вы можете сделать это:

def __str__(self):
    nonBreakSpace = u'\xa0'
    username = self.user.username if self.user else ""
    return "{} - {} - {}".format(str(self.user).ljust(25, nonBreakSpace),
                                 self.view.ljust(30, nonBreakSpace),
                                 str(self.date).ljust(32, nonBreakSpace)
                                 )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...