Es gibt viele Fragen zu diesem Fehler in SO, aber entweder verstehe ich sie falsch, oder sie treffen auf diesen Fall nicht zu.
Ich habe den folgenden Code in photo/models.py
.
class Photo(EmptyModelBase):
# there"s a lot of fields in this model.
Und das Folgende in points/models.py
class Label(EmptyModelBase):
photo = models.ForeignKey(Photo, related_name="labels")
In Anbetracht dessen, was funktioniert, verstehe ich, dass die Photo
Modell besitzt einen eindeutigen Schlüssel, da Label
kann eine haben photo
Feld mit einem Fremdschlüssel an die Photo
Modell.
Als nächstes wollte ich ein weiteres Modell hinzufügen points/models.py
, das hält auch einen Fremdschlüssel an Photos
class Material(EmptyModelBase):
photo = models.ForeignKey(Photo, related_name="material")
Beim Versuch, diese Änderungen zur Datenbank hinzuzufügen, wird der folgende Fehler angezeigt:
django.db.utils.ProgrammingError: there is no unique constraint matching given keys for referenced table "photos_photo"
Was ich aber durch diesen Fehler gemeint habe ist, dass das FotoDas Modell hat keine eindeutige Einschränkung, d. h. Einträge im Fotomodell sind nicht unbedingt eindeutig, weshalb der Fremdschlüssel möglicherweise nicht weiß, welchen Eintrag er verwenden soll. Ich kann jedoch den Fremdschlüssel in Label zum Modell hinzufügen, sodass eine Erklärung nicht sinnvoll erscheint.
Antworten:
-1 für die Antwort № 1Erweitern Sie Ihre Modelle mit django.db.models.Model, dann enthält es ein eindeutiges Feld, z. B. id.
Bitte beachten Sie die Dokumentation Hier