選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

models.py 1.6KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. # -*- coding: utf-8 -*-
  2. import re
  3. from django.contrib.auth.models import BaseUserManager
  4. from django.core import validators
  5. from django.db import models
  6. from django.utils.translation import gettext_lazy as _
  7. from oscar.apps.customer.abstract_models import AbstractUser
  8. class CustomUserManager(BaseUserManager):
  9. def create_user(self, username, email, password):
  10. """
  11. Creates and saves a User with the given email and password.
  12. """
  13. if not email:
  14. raise ValueError('Users must have an email address')
  15. user = self.model(
  16. email=CustomUserManager.normalize_email(email),
  17. username=username,
  18. is_active=True,
  19. )
  20. user.set_password(password)
  21. user.save(using=self._db)
  22. return user
  23. def create_superuser(self, username, email, password):
  24. u = self.create_user(username, email, password=password)
  25. u.is_admin = True
  26. u.is_staff = True
  27. u.save(using=self._db)
  28. return u
  29. class User(AbstractUser):
  30. """
  31. Custom user based on Oscar's AbstractUser
  32. """
  33. username = models.CharField(
  34. _('username'), max_length=30, unique=True,
  35. help_text=_('Required. 30 characters or fewer. Letters, numbers and '
  36. '@/./+/-/_ characters'),
  37. validators=[
  38. validators.RegexValidator(re.compile(r'^[\w.@+-]+$'), _('Enter a valid username.'), 'invalid')
  39. ])
  40. extra_field = models.CharField(
  41. _('Nobody needs me'), max_length=5, blank=True)
  42. objects = CustomUserManager()
  43. class Meta:
  44. app_label = 'myauth'