Null-Wert in der Spalte "name" verletzt not-null-Einschränkung beim hinzufügen von neuen Elements im django admin
Habe ich Hinzugefügt ein neues Modell auf mein admin. Dies ist mein models.py:
class EngineeringToolAttributeType(models.Model):
name = models.CharField(max_length=50)
description = models.CharField(max_length=255, blank=True, null=True)
api_url = models.CharField(max_length=255, blank=True, null=True)
api_field = models.CharField(max_length=50, blank=True, null=True)
active = models.BooleanField(default=True)
def __str__(self):
return self.name
Und die admin.py:
from extras.models import EngineeringToolAttributeType
from django.contrib import admin
class EngineeringToolAttributeTypeAdmin(admin.ModelAdmin):
fields = ['name', 'description', 'api_url', 'api_field', 'active']
list_display = ('name', 'description', 'api_url', 'api_field', 'active')
admin.site.register(EngineeringToolAttributeType, EngineeringToolAttributeTypeAdmin)
Wenn ich versuche hinzuzufügen (klicken Sie auf die Schaltfläche hinzufügen, über die admin), bekomme ich diesen Fehler:
Internal Server Error: /website/admin/extras/engineeringtoolattributetype/add/
IntegrityError at /admin/extras/engineeringtoolattributetype/add/
null value in column "name" violates not-null constraint
Dies ist noch nie zuvor passiert. Ich weiß, der name ist nicht zulässig Null
, aber ich bin immer noch ein Datensatz Hinzugefügt. Wie ist das möglich?
- Drucken Sie den Namen des Datensatzes, die Sie hinzufügen möchten.
- Nur um sicher zu gehen, das ist vor Sie das Formular abschicken? Nur Klick auf die Schaltfläche "Hinzufügen", und so sollte Sie auf das Formular.
- nicht versuchen, um jeden Datensatz noch. Ich klickte auf die Schaltfläche "Hinzufügen", um mich an die form.
- in der Tat!!! bevor ich das Formular abschicken. Total komisch!
- Hast du versucht, die Migration für einmal?
- ja, es sieht so aus das problem mit den Feldern "name" genannt, denn ich habe das gleiche problem mit anderen Modellen. Mehr eine PostgreSQL-ich denke,
- Ich habe gerade lief der code in meinem Rechner und es funktioniert perfekt. Ich bin auch mit PostgreSQL. Was ist die version von django?
- hast du das überschreiben der admin-Formular-Ansichten in irgendeiner Weise?
- 1.10
- nicht bei allen
- Bitte geben Sie den vollständigen traceback. Machen Sie den gleichen Fehler, wenn Sie entfernen Sie Ihre Modell ist
__str__
Methode?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dieser hat eine kurze Antwort hier.
Wenn Sie ein Feld als not null Feld django wird Sie bitten, entweder einen Standardwert im code selbst oder es wird Sie bitten, einen default-Wert beim ausführen von Migrationen.
Ein besserer Ansatz wäre, einige vernünftige standardmäßig in Ihren models.py selbst. Danach laufen
python manage.py makemigrations
undpython manage.py migrate
. Sie sollten in Ordnung sein.Dieses Problem ist teilweise das Ergebnis der Verwendung von nicht
CharField
undTextField
richtig. Sollten Sie fast verwenden Sie niemalsnull=True
auf diese Felder und deren Unterklassen.https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.Field.null
Ich würde sehr empfehlen, das entfernen dieser param von Ihrem
CharField
s undTextField
s.Auch nur um sicher zu laufen
./manage.py makemigrations && ./manage.py migrate
.