Django TypeError __str__返回了非字符串(类型为元组)

时间:2019-06-13 20:29:10

标签: python django django-models

我需要帮助。 我是菜鸟:)。 我需要在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 个答案:

答案 0 :(得分:1)

该错误已经说明,__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 expose the password
        return '{}/{}'.format(self.user_name, self.user_password)

但是,话虽如此,将密码添加到__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 self.user_name

以原始格式保存密码也很奇怪。通常密码是哈希

如果要更改用户模型,则应继承自AbstractUser [Django-doc]。有关更多信息,请参见Django documentation on Substituting a custom User model