IanSR
IanSR

Reputation: 1425

Django User model email field: how to make it mandatory

I need to make the email field in the Django User model mandatory. It isn't obvious to me how to do that. Suggestions welcome. I am currently using:

from django.contrib.auth.forms import UserCreationForm

for my User creation form, and combining this with my own custom UserProfileCreateForm

Ian

Upvotes: 16

Views: 13514

Answers (3)

Ryabchenko Alexander
Ryabchenko Alexander

Reputation: 12380

use EmailField in your model

see more at https://docs.djangoproject.com/en/2.1/ref/models/fields/#emailfield

Upvotes: 0

Dmitry
Dmitry

Reputation: 2138

from django import forms
from django.contrib.auth.models import User


class MyUserForm(forms.ModelForm):

    email = forms.CharField(max_length=75, required=True)

    class Meta:

        model = User
        fields = ('username', 'email', 'password')

Upvotes: 7

Derek Reynolds
Derek Reynolds

Reputation: 3503

You should be able subclass the provided registration form and override properties of a field in the Meta class.

from django.contrib.auth.forms import UserCreationForm

# Not sure about the syntax on this one. Can't find the documentation.
class MyUserCreationForm(UserCreationForm):

    class Meta:
        email = {
            'required': True
        }


# This will definitely work
class MyUserCreationForm(UserCreationForm):

    def __init__(self, *args, **kwargs):
        super(MyUserCreationForm, self).__init__(*args, **kwargs)

        self.fields['email'].required = True

Upvotes: 22

Related Questions