簡體   English   中英

django.db.utils.IntegrityError:NOT NULL約束失敗。 約束在哪里不被尊重?

[英]django.db.utils.IntegrityError: NOT NULL constraint failed. Where is the constraint is not respected?

我看到一些有關此錯誤的主題,但找不到答案。

這是我的錯誤:

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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM