Я создал настраиваемый модуль User, который добавляет несколько дополнительных полей:
class User(AbstractUser):
"""User modle for staff, clients and customers"""
username = None # remove username from the model
email = models.EmailField("email address", unique=True)
# """Email of user this will be used for login"""
address = models.OneToOneField(Address, on_delete = models.PROTECT, null=True, blank=True)
""":class:`Postal Address` associated with the User"""
birth_date = models.DateField()
"""Date of birth of User"""
phone = models.CharField(max_length=15)
"""Phone number of User"""
org = models.ForeignKey(Organization, on_delete=models.PROTECT, null=True, blank=True)
""":class:`Organization` User is associated with"""
# changes for using email instead of username
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['first_name', 'last_name', 'birth_date', 'phone']
objects = UserManager()
def __str__(self):
return F"{self.email} {self.first_name} {self.last_name}"
Когда я запускал команду createsuperuser
, она запрашивала Birth_date (и знал, как разбирать Это). Я ввел 2020-01-01 в качестве значения.
Любопытно, я затем временно поместил эти операторы в функцию createsuperuser
:
print("*****")
print(extra_fields)
print("*****")```
и получил:
{'first_name': 'super', 'last_name': 'user', 'birth_date': datetime.date(2020, 1, 1), 'phone': '12345', 'is_staff': True, 'is_superuser': True, 'is_active': True}
Как он узнал, что использовать datetime.date
и как его правильно разобрать?
Что еще более важно, как я могу сделать подобное поведение для настраиваемого связанного объекта?