sql >> データベース >  >> RDS >> Mysql

djangoauthユーザーがメールフィールドを切り捨てる

    EmailField75文字の長さはdjangoでハードコードされています。これは次のように修正できます:

    from django.db.models.fields import EmailField
    def email_field_init(self, *args, **kwargs):
      kwargs['max_length'] = kwargs.get('max_length', 200)
      CharField.__init__(self, *args, **kwargs)
    EmailField.__init__ = email_field_init
    

    ただし、これによりすべてのEmailFieldフィールドの長さが変更されるため、次のことも試すことができます。

    from django.contrib.auth.models import User
    from django.utils.translation import ugettext as _
    from django.db import models
    User.email = models.EmailField(_('e-mail address'), blank=True, max_length=200)
    

    どちらの方法でも、INSTALLED_APPSのdjango.contrib.authの前に、このコードを任意のモジュールのinitに配置するのが最善です

    Django 1.5以降、AbstractUserモデルに基づく独自のカスタムモデルを使用できるため、独自のフィールドと長さを使用できます。モデル内:

    from django.contrib.auth.models import AbstractUser
    from django.db import models
    
    class User(AbstractUser):
        email = models.EmailField(_('e-mail address'), blank=True, max_length=200)
    

    設定:

    AUTH_USER_MODEL = 'your_app.models.User'
    


    1. Innodb;複数のデータディレクトリ

    2. トランザクション、コミット、およびロールバックのMySQL自動インクリメント列

    3. 断片化が実行計画に与える影響

    4. SQLServerで結果セットのスキーマを取得する3つの方法