У меня есть три модели в моем приложении django ... модель members
, модель application
и модель applications review
.
Моя модель членов выглядит следующим образом ...
class Members(models.Model):
TITLES = (
('chairman', 'Chairman'),
('secretary', 'Secretary')
)
user = models.OneToOneField(User, on_delete=models.CASCADE)
title = models.CharField(max_length=10, choices=TITLES, default='secretary')
Модель моих приложений ...
class Application(models.Model):
firstname = models.CharField(max_length=20)
middlename = models.CharField(max_length=20)
lastname = models.CharField(max_length=20)
dob = DateField()
Модель обзора приложений ...
class ApplicationsReview(models.Model):
APPLICATION_STATUS = (
('pending', 'Pending Review'),
('approved', 'Approved'),
('rejected', 'Rejected')
)
applicant = models.OneToOneField(Application, on_delete=models.CASCADE, primary_key=True)
chairman = models.ForeignKey(Members, related_name='chairs', on_delete=models.CASCADE)
secretary = models.ForeignKey(Members, related_name='secretaries', on_delete=models.CASCADE)
application_status = models.CharField(max_length=10, choices=APPLICATION_STATUS, default='pending')
status_justification = models.TextField()
date = models.DateTimeField(auto_now_add=True)
Когда приложение создается, я хотел бы, чтобы его обзор создавался какхорошо, следовательно, у меня есть следующий сигнал прямо под моделью обзора приложений ...
# When an application is created, create with it an application review and associate it with the application instance
@receiver(post_save, sender=Application)
def create_application_review(sender, **kwargs):
instance = kwargs['instance']
created = kwargs['created']
if created:
ApplicationReview.objects.create(applicant=instance)
Однако, когда я пытаюсь добавить приложение в администраторе django, я получаю ошибку
null value in column "chairman_id" violates not-null constraint
DETAIL: Failing row contains (3, pending, 2019-02-08 03:26:04.643452+00, null, null).
Ошибка, по-видимому, является результатом сигнала, пытающегося создать экземпляр ApplicationsReview
без предоставления значений для председателя и секретаря.Даже установка их для пустых полей не избавляет от ошибки.Есть что-то, чего я здесь не хватает?