django.db.utils.IntegrityError: NOT NULL constraint failed: new__inventory_app_item.accounting_class_id

Question:

So i’ve been working on a Django-project for a while, and i’m about to finish it. I decided to add a feature to it, and i added a new Foreign key to my model. I made the makemigrations my_app, but when i try to migrate it, this error appears:

django.db.utils.IntegrityError: NOT NULL constraint failed: new__inventory_app_item.accounting_class_id

This is the model:

class AccountingClass(models.Model):
    name = models.CharField(max_length=150, default="", blank=False)
    
    def __str__(self):  
        return self.name

and this is the Foreign-Key Reference to it:

`accounting_class = models.ForeignKey("AccountingClass", on_delete=models.SET_NULL, default="", blank=False, null=True, help_text="The accounting class of the object")`

What’s the problem with this?

Asked By: whoami0605

||

Answers:

It means you have data in your database where accounting class reference does not have the value of type PK. I suspect it is due to the fact that you set default="" which is a string (varchar). This can be completely removed since you have null=True so by default you will have null when there is no reference to the accounting class.

You should also delete all data that have empty string ("") as the value of this field or set them to some default value.

Answered By: vinkomlacic