Djangoのmodel.pyに記述したモデルのテーブルが作成できません。
作成できないのは14個あるモデルのうちの1つだけで、CustomUserModelとして、デフォルトのユーザー認証を拡張しています。
Webの情報から、データベースを作り直したり、アプリ名をつけてmigrateを実行したり試してみたのですが、解決できずにいます。
通常のモデルは正常にテーブルが作成されるので、カスタムユーザー認証がらみの問題だとは思いますが、どのようにしたらテーブルが作成するのかわかりません。
Webブラウザで認証しようとすると、
ProgrammingError at /apiv1/login/
relation "apiv1_customuser" does not exist
LINE 1: ...te_date", "apiv1_customuser"."modify_date" FROM "apiv1_cus...
のように表示されてしまいます。
モデルの定義は下記のように設定しています。
どのようにしたら、このようなカスタムモデルのテーブルが作成できるのかご見識の方がいらっしゃいましたらご教示いただけると幸いです。
class CustomUserManager(BaseUserManager): def _create_user(self, email, password, is_staff, is_superuser, **extra_fields): now = timezone.now() if not email: raise ValueError('User must have a e-mail address.') email = self.normalize_emai(email) user = self.model(email=email, is_staff=is_staff, is_active=True, is_superuser=is_superuser, last_login=now, date_joined=now, **extra_fields) user.set_password(password) user.save(using=self._db) return user def create_user(self, emsil, password=None, **extra_fields): return self._create_user(email, password, False, False, **extra_fields) def create_superuser(self, email, password): return self.create_user(user_email, user_password, True, True, **extra_fields)
class CustomUser(AbstractBaseUser): email = models.CharField(max_length=32, primary_key=True) user_name = models.CharField(max_length=32) user_kana_name = models.CharField(max_length=32, blank=True) # password = models.CharField(max_length=32) user_birthdate = models.DateField(null=True, blank=True) user_sex = models.SmallIntegerField(null=True) user_postno = models.CharField(max_length=7, blank=True) user_address1 = models.CharField(max_length=128) user_address2 = models.CharField(max_length=128, blank=True) user_telno = models.CharField(max_length=16, blank=True) user_photo = models.ImageField(blank=True) authentication_status = models.BooleanField(default=False) create_date = models.DateTimeField(auto_now_add=True) modify_date = models.DateTimeField(auto_now=True) USERNAME_FIELD = 'email' REQUIRED_FIELDS = ['user_name', 'user_telno'] objects = CustomUserManager() class Meta: verbose_name = _('user') verbose_name_plural = _('users') # db_table = 'apiv1_custom_user' # swappable = 'AUTH_USER_MODEL' def get_absolute_url(self): return "/users/%s" % urlquote(self.email) def email_user(self, subject, message, from_email=None): send_mail(subject, message, from_email, [self_email])
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/08/29 14:41