django.db.utils.IntegrityError: NOT NULL 约束失败.哪里不遵守约束?



我看到一些关于此错误的主题,但我找不到答案。

这是我的错误:

django.db.utils.IntegrityError: NOT NULL constraint failed: domain_analyse_practice.header_id

我真的不明白为什么会发生此错误。

我 models.py:

class Header(models.Model):
name = models.CharField(max_length=40, null=False)
description = models.CharField(max_length=500, null=False)

class Practice(models.Model):
nature = models.CharField(max_length=10, null=False)
value = models.CharField(max_length=300, null=False)
further = models.CharField(max_length=50, null=True, blank=True)
header = models.ForeignKey(Header, on_delete=models.CASCADE)
def value_cleaner(self):
self.value = self.value.replace("‘","'").replace("’", "'")
def __init__(self, *args, **kwargs):
super(Practice, self).__init__()
self.value_cleaner()

这是我负责填充数据库的init_db.py脚本:

def init_practice_db(filename):
with open('config/' + filename, newline='') as csv_file:
reader = csv.reader(csv_file, delimiter=',', quotechar='|')
i = 0
for row in reader:
if i != 0:
# Not the header row
header_name = row[0]
# Select the header in database with header name
header = Header.objects.get(name=header_name)
further = None
nature = row[1].rstrip()
value = row[2].rstrip()
if row[3] != "None":
further = further
Practice.objects.create(nature=nature, value=value, further=further, header=header)
i += 1

如果缺少某些信息,请告诉我:) 谢谢你的回答。

您没有将任何参数传递给super(Practice, self).__init__()。试试这个

class Practice(models.Model):
...
def __init__(self, *args, **kwargs):
super(Practice, self).__init__(*args, **kwargs)
self.value_cleaner()

最新更新