创建新模型对象时出现 IntegrityError
IntegrityError when creating a new model object
我遇到错误:
IntegrityError at evaluation/evaluee/new**
Null value in column "Evaluation_data_id" violates not-null constraint**
我认为这与我建立与两个模型的关系的方式有关。
想法是:每次创建一个 EvaluationModel 时,也应该从第一个模型创建一个 EvaluatorModel 对象(获取一些值,例如 evaluee 和 evaluator)。
我创建了一个 evaluation_data 字段以便我可以访问 EvaluationModel
我的模特:
class EvaluationModel(models.Model):
evaluee = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
related_name= '+',
verbose_name='Evaluee',
)
evaluator = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
related_name= '+',
verbose_name='Evaluator',
)
dgl = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
related_name= '+',
verbose_name='DGL',
)
# (...)
def save(self,*args,**kwargs):
created = not self.pk
super().save(*args,**kwargs)
if created:
EvaluatorModel.objects.create(evaluee = self.evaluee, evaluator = self.evaluator, dgl = self.dgl, currentrole = self.currentrole,tenure = self.tenure)
class EvaluatorModel(models.Model):
#evaluator
evaluee = models.CharField(null = True, blank = True, max_length=50)
evaluator = models.CharField(null = True, blank = True, max_length=50)
evaluation_data = models.OneToOneField(
EvaluationModel,
on_delete=models.CASCADE,
primary_key= True,
related_name="evaluationdata",
default = "",
db_constraint=False,
)
def __str__(self):
return self.evaluee + '-' + self.evaluator
在您的 save
方法中,您进行以下调用:
EvaluatorModel.objects.create(evaluee = self.evaluee,
evaluator = self.evaluator,
dgl = self.dgl,
currentrole = self.currentrole,
tenure = self.tenure)
但未指定 evaluation_data
的值。添加
evaluation_data = self
连同解决此问题的参数。
如果不需要 evaluation_data
,您还可以将 null=True
添加到它的定义中,并避免从其他地方创建的对象(您仍然可能没有 EvaluationModel
实例尚未创建)引发相同的错误。
我遇到错误:
IntegrityError at evaluation/evaluee/new**
Null value in column "Evaluation_data_id" violates not-null constraint**
我认为这与我建立与两个模型的关系的方式有关。
想法是:每次创建一个 EvaluationModel 时,也应该从第一个模型创建一个 EvaluatorModel 对象(获取一些值,例如 evaluee 和 evaluator)。
我创建了一个 evaluation_data 字段以便我可以访问 EvaluationModel
我的模特:
class EvaluationModel(models.Model):
evaluee = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
related_name= '+',
verbose_name='Evaluee',
)
evaluator = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
related_name= '+',
verbose_name='Evaluator',
)
dgl = models.ForeignKey(
get_user_model(),
on_delete=models.CASCADE,
related_name= '+',
verbose_name='DGL',
)
# (...)
def save(self,*args,**kwargs):
created = not self.pk
super().save(*args,**kwargs)
if created:
EvaluatorModel.objects.create(evaluee = self.evaluee, evaluator = self.evaluator, dgl = self.dgl, currentrole = self.currentrole,tenure = self.tenure)
class EvaluatorModel(models.Model):
#evaluator
evaluee = models.CharField(null = True, blank = True, max_length=50)
evaluator = models.CharField(null = True, blank = True, max_length=50)
evaluation_data = models.OneToOneField(
EvaluationModel,
on_delete=models.CASCADE,
primary_key= True,
related_name="evaluationdata",
default = "",
db_constraint=False,
)
def __str__(self):
return self.evaluee + '-' + self.evaluator
在您的 save
方法中,您进行以下调用:
EvaluatorModel.objects.create(evaluee = self.evaluee,
evaluator = self.evaluator,
dgl = self.dgl,
currentrole = self.currentrole,
tenure = self.tenure)
但未指定 evaluation_data
的值。添加
evaluation_data = self
连同解决此问题的参数。
如果不需要 evaluation_data
,您还可以将 null=True
添加到它的定义中,并避免从其他地方创建的对象(您仍然可能没有 EvaluationModel
实例尚未创建)引发相同的错误。