return Database.Cursor.execute (self, query, params) IntegrityError: не выполнено ограничение NOT NULL: - PullRequest
0 голосов
/ 20 мая 2018

В настоящее время я работаю над небольшим проектом, использующим технологию фреймворка 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() было невозможным для обоих пользователей (классов), когда пароль не указан.Спасибо

...