1. ホーム
  2. python

[解決済み] Django で email フィールドを設定する方法は?

2022-02-12 13:51:47

質問

Djangoでユーザーモデルを作っているのですが、emailフィールドでエラーが発生し、emailフィールドで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" を実行しようとすると、エラーが発生します。

userにnullでないフィールド'first_name'をデフォルトなしで追加しようとしています。 修正方法を選択してください。 1) 一度限りのデフォルトを提供する (このカラムにヌル値がある既存のすべての行に設定されます) 2) 終了して、models.pyにデフォルトを追加させてください。 オプションを選択してください。

解決方法は?

基本的に、データベースにはすでにユーザーが存在します。Userに新しいフィールドを追加すると、既存のユーザーのために、データベース内に空白の場所ができてしまいます。

しかし、あなたのコードは、空白の場所が許可されないようになっています。現在のコードでは、すべてのユーザーについて、その場所に値がなければなりません。

あなたの選択肢

1. データベースを消去する

開発開始からそれほど時間が経っていない場合は、データベースをリセットしてユーザーをゼロにします。そうすれば、すべてが正しく機能するはずです。

2. 一部のユーザーには空白/NULLにし、後で修正する。

以下のいずれかを User_Id という宣言をします。 default='DEFAULT VALUE', blank=True or null=True このままでもいいのですが、古いユーザーのために後で修正する必要があります。

また、あなたのエラーは、メールについてではないことを指摘しておきます( User_email )フィールドではなく User_id フィールドを使用します。それを完全に削除してください。Django のモデルには、主キーを管理するためのシステムが既に組み込まれてい ます。それは pk .