python - Django TypeError __str__ 返回非字符串(类型元组)

标签 python django django-models

我需要帮助。 我是菜鸟:)。 我需要在 Django 中创建模型来保存用户名和密码。 用户名就OK了。 但密码有问题。 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

最佳答案

正如错误已经指出的那样,__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 documentation on Substituting a custom User model .

关于python - Django TypeError __str__ 返回非字符串(类型元组),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56588154/

相关文章:

python - Pyramid 框架能否在CGI服务器上运行

python - 从数据库中检索更新的表 - MySQLdb

python - Django 提示查询必须在子查询中使用,当它在子查询中使用时

Django - 对称关系 OneToOneField

shell - 使用 Django shell 实例化具有外键属性的对象

python - Pybind Numpy 访问 2D/ND 数组

python - 如何在 python 中并排获取七段输出?

python - 如何使用 django-allauth 查找用户的 patreon 质押层进行身份验证

django 1.9 createsuperuser 绕过密码验证检查

python - 更改 Django 管理员 list_display 中的可点击字段