【问题标题】:How to set email field in Django?如何在 Django 中设置电子邮件字段?
【发布时间】:2020-01-19 01:57:06
【问题描述】:

您好,我正在 Django 中创建用户模型,但收到有关电子邮件字段的错误,并且 unique=True 也无法在电子邮件字段上工作。

class User(models.Model):
    user_name   = models.CharField(max_length=50,unique=True)
    first_name  = models.CharField(max_length=50)
    last_name   = models.CharField(max_length=50)
    User_email  = models.EmailField(max_length=70,blank=True,unique=True)
    password    = models.CharField(max_length=12)

我在尝试运行命令“python manage.py makemigrations”时遇到的错误:

您正在尝试在没有默认值的情况下向用户添加不可为空的字段“first_name”;我们不能这样做(数据库需要一些东西来填充现有的行)。 请选择一个修复: 1) 现在提供一次性默认值(将在所有现有行上设置此列的空值) 2)退出,让我在models.py中添加一个默认值 选择一个选项:

【问题讨论】:

  • 您可能已经迁移了该模型。为什么要自己添加主键?当您在没有显式主键的情况下构建模型时,Django 为您制作了一个。所以我建议你删除user_id 列。
  • 我已经编辑了我的代码并删除了该用户 ID,但错误仍然存​​在
  • @SapanZaveri:设置默认值对该特定问题没有影响。 Django 不知道如何处理 User_id 字段。
  • @mohitchandel:现在可能是一个稍微不同的问题......
  • @willem 有两个问题。第一个是我上面提到的,第二个是 'unique=True' 不适用于电子邮件

标签: python django django-models


【解决方案1】:

基本上,您的数据库中已经有用户。当您向用户添加新字段时,数据库中最终会出现现有用户的空白点。

但是,您的代码不允许出现空白点。正如您的代码当前一样,该位置必须为所有用户提供一个值。

您的选择:

1.擦除您的数据库

如果您在开发过程中的时间不长,只需将您的数据库重置为没有用户。然后一切都应该正常工作。

2。让某些用​​户为空白/空,稍后修复它

将以下内容之一添加到您的 User_Id 声明中。 default='DEFAULT VALUE', blank=True or null=True这会让你继续前进,但你需要稍后为老用户修复它。

我还要指出,您的错误与电子邮件 (User_email) 字段无关,而与 User_id 字段有关。完全删除它。 Django 模型已经带有一个用于管理主键的内置系统。它是pk

【讨论】:

    猜你喜欢
    • 2017-06-17
    • 1970-01-01
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-14
    • 1970-01-01
    相关资源
    最近更新 更多