Mysql
 sql >> Base de données >  >> RDS >> Mysql

django auth Champ d'e-mail tronqué par l'utilisateur

EmailField La longueur de 75 caractères est codée en dur dans Django. Vous pouvez résoudre ce problème comme suit :

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

mais cela changera TOUTES les longueurs des champs EmailField, vous pouvez donc également essayer :

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)

dans les deux cas, il serait préférable de mettre ce code dans l'initialisation de n'importe quel module AVANT django.contrib.auth dans votre INSTALLED_APPS

Depuis Django 1.5, vous pouvez utiliser votre propre modèle personnalisé basé sur le modèle AbstractUser, vous pouvez donc utiliser vos propres champs et longueurs. Dans vos modèles :

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)

Dans les paramètres :

AUTH_USER_MODEL = 'your_app.models.User'