Désolé, si c'est une question très basique, mais je me demandais où les valeurs de champ de modèle utilisateur Django comme is_active
sont enregistrés comme je ne les vois pas dans la base de données.Où sont enregistrés les champs du modèle Django?
J'utilise un modèle utilisateur personnalisé, mais ils doivent encore l'être quelque part ... :)
models.py
class MyUserManager(BaseUserManager):
def create_user(self, username, email, password=None):
"""
Creates and saves a User with the given email and password.
"""
if not email:
raise ValueError('Users must have an email address')
user = self.model(
email=self.normalize_email(email),
)
self.username = username
user.set_password(password)
user.save(using=self._db)
return user
...
class MyUser(AbstractBaseUser):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
is_active = False
objects = MyUserManager()
USERNAME_FIELD = 'email'
...
tables dans la base de données:
Schema | Name | Type | Owner
--------+------------------------+-------+------------
public | auth_group | table | xxx
public | auth_group_permissions | table | xxx
public | auth_permission | table | xxx
public | django_admin_log | table | xxx
public | django_content_type | table | xxx
public | django_migrations | table | xxx
public | django_session | table | xxx
public | drillapp_myuser | table | xxx
public | drillapp_question | table | xxx
public | drillapp_story | table | xxx
(10 rows)
Cette est comment la table d'utilisateur ressemble. Pas de colonne is_active
.
drill=# select * from drillapp_myuser;
id | password | last_login | email
----+---------------------------------------+------------+----------------------
45 | pbkdf2_sha256$36000$GNzjZ...edPewC28= | | [email protected]
(1 row)
Dans le shell, je peux accéder au champ is_active
, que je ne vois pas dans la base de données:
>>> from django.contrib.auth import get_user_model
>>> u = get_user_model().objects.get(pk=45)
>>> u.is_active
False