1
1
from django .db import models
2
- from django .contrib .auth .models import AbstractBaseUser
2
+ from django .contrib .auth .models import AbstractBaseUser , BaseUserManager
3
3
from django .contrib .auth import password_validation
4
4
5
+ class UserManager (BaseUserManager ):
6
+ use_in_migrations = True
7
+
8
+ def create_user (self , email , password = None , ** kwargs ):
9
+ user = self .model (email = email , password = password , ** kwargs )
10
+
11
+ user .save (using = self ._db )
12
+ return user
13
+
14
+ def create_superuser (self , email , username , password ):
15
+ user = self .create_user (email , password = password , username = username , is_admin = True )
16
+ user .save (using = self ._db )
17
+ return user
18
+
19
+ def get_by_natural_key (self , username ):
20
+ case_insensitive_username_field = '{}__iexact' .format (self .model .USERNAME_FIELD )
21
+ return self .get (** {case_insensitive_username_field : username })
5
22
6
23
class User (AbstractBaseUser ):
7
24
USERNAME_FIELD = 'username'
8
25
26
+ REQUIRED_FIELDS = ['email' ]
27
+
9
28
created_at = models .DateTimeField (auto_now_add = True )
10
29
updated_at = models .DateTimeField (auto_now = True )
11
30
password = models .CharField (
@@ -24,5 +43,11 @@ class User(AbstractBaseUser):
24
43
is_admin = models .BooleanField (default = False )
25
44
flagged = models .BooleanField (default = False )
26
45
46
+ objects = UserManager ()
47
+
27
48
def __str__ (self ):
28
49
return self .username
50
+
51
+ @property
52
+ def is_staff (self ):
53
+ return self .is_admin
0 commit comments