Leere ForeignKeys bei Django mit MySQL
Verfasst: Dienstag 18. Januar 2022, 20:30
Hallo zusammen,
ich arbeite gerade an meiner ersten Webanwendung mit Django und stolpere nun über die Anbindung an meine bestehende MySQL-Datenbank. Ich bekomme es nicht hin, dass in Django meine Foreign Keys automatisch ausgefüllt werden.
Meine bestehende Datenbank hat aktuell 2 Tabellen:
Jedes Land aus Country kann wiederum mehreren Ligen aus League zugeordnet sein.
Folgende Models habe ich mittels inspectdb generiert:
Mit bekomme ich zwar alle Objekte aus League ausgegeben, wenn ich aber filtern möchte mit , dann bekomme ich nur ein leeres QuerySet. Es funktioniert nur, wenn ich nutze. Dann gibt er mir jedoch wieder alle Objekte zurück. Entsprechend sind auch alle QuerySets leer, wenn ich mir zu jedem Country die jeweilige Leagues anzeigen lassen möchte.
Ich habe das Gefühl, dass die ForeignKeys nicht richtig ausgefüllt werden. Wenn ich nämlich im Backend der Anwendung nachschaue, ist das Feld Country in der Tabelle League leer.
Hat jemand eine Idee, wo mein Fehler liegen könnte?
ich arbeite gerade an meiner ersten Webanwendung mit Django und stolpere nun über die Anbindung an meine bestehende MySQL-Datenbank. Ich bekomme es nicht hin, dass in Django meine Foreign Keys automatisch ausgefüllt werden.
Meine bestehende Datenbank hat aktuell 2 Tabellen:
- Country
- League
Jedes Land aus Country kann wiederum mehreren Ligen aus League zugeordnet sein.
Folgende Models habe ich mittels inspectdb generiert:
Code: Alles auswählen
from django.db import models
class Country(models.Model):
name = models.CharField(unique=True, max_length=45)
isocode = models.CharField(unique=True, max_length=10)
def __str__(self):
return "{} ({})".format(self.name, self.isocode)
class Meta:
managed = False
db_table = 'Country'
class League(models.Model):
name = models.CharField(max_length=45)
country = models.ForeignKey(to='Country', on_delete=models.CASCADE, db_column='country')
shortcut = models.CharField(unique=True, max_length=45)
def __str__(self):
return "{} {} ({})".format(self.name, self.country_id, self.shortcut)
class Meta:
managed = False
db_table = 'League'
unique_together = (('name', 'country'),)
Code: Alles auswählen
League.objects.all()
Code: Alles auswählen
League.objects.filter(country_id="1")
Code: Alles auswählen
League.objects.filter(country_id="0")
Ich habe das Gefühl, dass die ForeignKeys nicht richtig ausgefüllt werden. Wenn ich nämlich im Backend der Anwendung nachschaue, ist das Feld Country in der Tabelle League leer.
Hat jemand eine Idee, wo mein Fehler liegen könnte?