Ich habe eine MySQL-Datenbank mit 9 Tabellen. Sie sind alle irgendwie miteinander verwandt, aber ich habe Probleme mit der Verbindung mit Fremdschlüsseln. Zum Beispiel sind hier zwei meiner Tabellen, die ich eine Störung erhalte, wenn ich zu Python manage.py Migrate versuchen:Django Primärschlüssel, der als Fremdschlüssel fungiert
class Release(models.Model):
release_ID = models.CharField(max_length=25, primary_key =True)
releaseversion = models.CharField(max_length=25)
model_ID = models.ForeignKey(Model, on_delete=models.CASCADE) #comes from Model class
class Subrelease(models.Model):
subrelease_ID = models.CharField(max_length=25)
release_ID = models.ForeignKey('Release', blank =True) #comes from Release class
subreleaseversion = models.CharField(max_length=25)
Wie würde ich den Primärschlüssel aus der Klasse Release zu erstellen, die sein release_ID auch die ForeignKey release_ID ist in der Klasse Jede Hilfe würde sehr geschätzt werden. Vielen Dank.
Nachdem ich laufen wandern bekomme ich diese in cmd: django.db.utils.InternalError: (1829, „Can not Spalte 'id' fallen: in einem Fremdschlüssel benötigt 'app_subrel_release_ID_id_8e08450_fk_app_release_id' der Tabelle 'db.app_subrelease' ")
UPDATE: Ist das gut/okay zu tun? Ich habe keine Fehler bei der Migration zur DB?
class Release(models.Model):
#release_ID = models.CharField(max_length=25, primary_key =True)THIS WILL BE OUR PRIMARY KEY MADE BY DJANGO
releaseversion = models.CharField(max_length=25)
model = models.ForeignKey(Model, on_delete=models.CASCADE) #comes from Model class model_ID
class Subrelease(models.Model):
#subrelease_ID = models.CharField(max_length=25) THIS WILL BE OUR PRIMARY KEY MADE BY DJANGO
release = models.ForeignKey(Release, on_delete=models.CASCADE) #comes from Release class release_ID
subreleaseversion = models.CharField(max_length=25)
"Ein Fehler"? Teilen ist Kümmern. –
Können Sie Ihren Einzug richtig formatieren? Welcher Fehler? Zurück verfolgen? Außerdem glaube ich nicht, dass Sie leer = True als Fremdschlüssel möchten –
oops, Sorry, ich habe vergessen, den Fehler zu posten. Danke für die Information. Ich habe meine Frage aktualisiert. – Carbon