django ForeignKey null = true
from django.db import models
class Story(models.Model):
id = models.IntegerField(primary_key=True)
news_type = models.CharField(max_length=255,null=True)
category_id = models.CharField(max_length=255,null=True)
title = models.CharField(max_length=255,null=True)
created = models.DateTimeField(null=True)
author = models.CharField(max_length=255, null=True)
author_title = models.CharField(max_length=255, null=True)
image_caption = models.TextField(null=True)
image_credit = models.CharField(max_length=255,null=True)
image_full_url = models.CharField(max_length=255,null=True)
body = models.TextField(null=True)
summary = models.TextField(null=True)
video_id = models.CharField(max_length=255,null=True)
external_url = models.CharField(max_length=255,null=True)
order = models.IntegerField(null=True)
class StoryFactBox(models.Model):
story = models.ForeignKey('Story', null = True)
body = models.TextField()
class StoryKeyword(models.Model):
story = models.ForeignKey('Story', null = True)
keyword = models.CharField(max_length=255)
Welche schema-änderungen models.ForeignKey('Story', null = True)
Ursache geschehen?
Lese ich aus den docs:
Ich verwenden möchten, entfernen() und clear () - und dies ist Teil der Dokumentation.
Um zu verhindern, dass Datenbank-Inkonsistenz existiert diese Methode nur auf die ForeignKey-Objekte, wobei null=True. Wenn das zugehörige Feld nicht auf None gesetzt sein (NULL), dann ein Objekt kann nicht entfernt werden, aus einer Beziehung, ohne in ein anderes. In dem oben genannten Beispiel entfernen von e aus b.entry_set() ist äquivalent zu elektronischen.blog = Keine, denn der blog ForeignKey nicht null=True, ist dies ungültig.
InformationsquelleAutor Chris Muench | 2013-02-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es verursacht keine änderungen am schema (nur Klärung, sondern nur Tabellen, nicht ändern), aber auf syncdb, würde erstellen von SQL-Anweisungen ohne
NOT NULL
.Können Sie die SQL-Ausgabe der Tabellendefinitionen über
python manage.py sqlall my_app
Sie und sehen Sie selbst!InformationsquelleAutor Yuji 'Tomita' Tomita