猿问

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

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


三国纷争
浏览 499回答 1
1回答

一只斗牛犬

您没有将任何参数传递给super(Practice, self).__init__()。试试这个class Practice(models.Model):    ...    def __init__(self, *args, **kwargs):        super(Practice, self).__init__(*args, **kwargs)        self.value_cleaner()
随时随地看视频慕课网APP

相关分类

Python
我要回答