Mit einem ForeignKey, NICHT NULL-Einschränkung ist fehlgeschlagen
Schreibe ich eine website in Django und ich möchte verschiedene blogs für verschiedene Kategorien von Beiträgen. Ich habe ein Modell Veröffentlichen, bei dem mit einem ForeignKey auf den Blog-Modell.
Folgenden die nützliche Hilfe, die ich gegeben wurde hier, die ich habe:
class Blog(models.Model):
# category of the blog
category = models.CharField(max_length=50)
# its title (for the view)
title = models.CharField(max_length=100)
# its url (for url.py)
url = models.URLField()
class Post(models.Model):
# blog
blog = models.ForeignKey(Blog, null=True)
# other fields
# ...
Immer wenn ich versuche python manage.py migrate pad
bekomme ich
sqlite3.IntegrityError: NOT NULL constraint failed: pad_post__new.blog_id
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
[...]
django.db.utils.IntegrityError: NOT NULL constraint failed: pad_post__new.blog_id
Muss ich für eine id
im Blog explizit? Ich habe versucht, mit verschiedenen Kombinationen von blank=null
und null=True
in verschiedenen Bereichen, aber ich bekomme immer diese Fehlermeldung.
- Zuerst von allen, sollten Sie sauber Vorherige Migrationen. Können Sie gewährleisten, dass die bisherigen python manage.py schemamigration pad --auto-Datei entfernt wird, um sich zu regenerieren, ihn wieder mit Ihrer null-Zustand, Modell verpasst?
- haben Sie laufen makemigrations schon???
- xecgr: muss ich alle entfernen .py-Dateien mit Ausnahme von init.py und 0001_initial.py in pad/Migrationen ? (Ich will nicht alles zu brechen.) cdvv7788: ja, ich Laufe makemigrations. Ohne jede Frage.
- haben Sie jemals herausfinden? Ich bin mit dem gleichen problem.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich hatte genau das gleiche Problem und es behoben durch hinzufügen von blank=True " bei der Angabe der foreignkey, wie vorgeschlagen, in diesem thread
Hoffe, das hilft..
Anstelle einer Antwort vom OP, geraten die Lösung in diesem Fall ist zu gewährleisten, dass Sie gesäubert haben keine anhaltende Migrationen durch Umbau/Herstellung Migrationen aus den neuen Kopie des Modells mit den folgenden:
In diesem Fall denken Sie daran, dass
pad
bezieht sich auf die Benutzer-Anwendung name. Sie können lassen Sie es vom Befehl, um frische Migrationen auf der ganzen Linie:Einmal abgeschlossen, können Sie entweder die app-spezifischen oder Allgemeinen migration:
Wenn Sie nach dieser, Sie sind immer noch ein problem dann ist dein Modell selbst hat ein Problem.