В настоящее время я работаю над небольшим проектом, использующим технологию фреймворка Python Django.Я пытался расширить собственную модель пользователя для создания 2 типов пользователей, и я делал это так:
class User(AbstractUser):
is_student = models.BooleanField(default = False,)
is_teacher = models.BooleanField(default = False,)
#Particularly for Teacher:
class Teacher(User):
is_teacher = True
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
USERNAME_FIELD = 'username'
REQUIRED_FIELD = ['username']
#Particularly for Student:
class Student(User):
is_student = True
reg_num = models.CharField(max_length = 45)
created_at = models.DateTimeField(auto_now_add = True)
updated_at = models.DateTimeField(auto_now = True)
USERNAME_FIELD = 'username'
REQUIRED_FIELD = ['username']
всякий раз, когда я пытаюсь создать и сохранить любого из таких пользователей из моей оболочки
from django.db import models
from hire.models import Teacher
j = Teacher(username = 'teacherAubrey', email = 'learn@aubrey.com',
password = 'squarerootof69is8sum')
j.save()
возврат Database.Cursor.execute (self, query, params) IntegrityError: сбой ограничения NOT NULL: hire_teacher.email
hireэто имя приложения teacher - это имя класса, к которому я обращаюсь email - это атрибут
Как вы думаете, какие здесь проблемы?
Я намеренно не объявлял имена пользователей, пароли и адреса электронной почты в моих классах Учителя и Студента, потому что я наследую их от класса Пользователя
Обновление Я былв состоянии решить вышеуказанную проблему.Теперь я хочу, чтобы было невозможно вызвать .save()
для класса Student, когда поле reg_num пусто.И я хочу, чтобы использование .save()
было невозможным для обоих пользователей (классов), когда пароль не указан.Спасибо