Декодирование пользовательских данных в строку в Django - PullRequest
0 голосов
/ 12 апреля 2020

У меня есть модель в Django под названием Учетная запись

class Account(AbstractBaseUser):
    email = models.EmailField(verbose_name="email", max_length=60, unique=True)

Я пытаюсь распечатать письмо в виде строки в views.py.

def fill_view(request):

    # ... authentication ...

    email = Account.objects.filter(email=user.email).first()

    # ... setting up forms ....

    can.drawString(10, 100, email)

Я получаю следующая ошибка:

 Exception Type: AttributeError at /fill/
 Exception Value: 'Account' object has no attribute 'decode'

Как я могу декодировать письмо в строку в Django при переносе данных из models.py в views.py?

Я нашел это тема на Reddit полезна, и это заставило меня поверить, что это может быть проблема с mySQL.

Ответы [ 2 ]

2 голосов
/ 12 апреля 2020

У вас нет проблем с MySQL, вы просто не получаете доступ к электронной почте из объекта Account

account = Account.objects.filter(email=user.email).first()
can.drawString(10, 100, account.email)
2 голосов
/ 12 апреля 2020

Сделайте это, используя @property

@property
  def email_text(self):
     return mark_safe(u"%s") % (escape(self.email))

Вы можете вызвать это для любого объекта электронной почты, который сохраняется в email. Таким образом, вам просто нужно сделать can.drawString(10, 100, email.email_text())

mark_safe от django .utils.safestring, см. здесь для этого

...