Django TypeError __str__ вернул не-строку (тип кортеж) - PullRequest
1 голос
/ 13 июня 2019

Мне нужна помощь. Я нуб :) Мне нужно создать модель в Django, чтобы сохранить имя пользователя и пароль. Имя пользователя в порядке. Но у пароля есть проблема. str возвращено не-строка (тип кортеж)

from django.db import models

# Create your models here.

class User(models.Model):
    user_name = models.CharField(max_length=25, null=False, blank=False, default='User')
    user_password = models.CharField(max_length=10, null=False, blank=False, default='1234')

    def __str__(self):
        return self.user_name, self.user_password

1 Ответ

1 голос
/ 13 июня 2019

Как уже говорилось в ошибке, __str__ должен возвращать строку, а не кортеж.Например, вы можете вернуть:

class User(models.Model):
    user_name = models.CharField(max_length=25, null=False, blank=False, default='User')
    user_password = models.CharField(max_length=10, null=False, blank=False, default='1234')

    def __str__(self):
        # danger: might <i>expose</i> the password
        return <b>'{}/{}'.format(</b>self.user_name, self.user_password<b>)</b>

Но, как говорится, очень странно добавлять пароль к объекту __str__, поскольку это будет означать, что если вы отрендеритеUser, вы выставляете пароль.Таким образом, может быть лучше просто вернуть user_name:

class User(models.Model):
    user_name = models.CharField(max_length=25, null=False, blank=False, default='User')
    user_password = models.CharField(max_length=10, null=False, blank=False, default='1234')

    def __str__(self):
        return <b>self.user_name</b>

Также странно сохранять пароль в необработанном формате.Обычно пароль хэшируется .

Если вы хотите изменить модель пользователя, вы должны наследовать от AbstractUser [Django-doc] .Для получения дополнительной информации см. Документацию Django по Замена пользовательской модели пользователя .

...