/ / Für die referenzierte Tabelle in Django - Python, Django gibt es keine eindeutige Abhängigkeit, die mit den angegebenen Schlüsseln übereinstimmt

In django-python, django gibt es keine eindeutige Einschränkung für bestimmte Schlüssel für referenzierte Tabelle

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 № 1

Erweitern Sie Ihre Modelle mit django.db.models.Model, dann enthält es ein eindeutiges Feld, z. B. id.

Bitte beachten Sie die Dokumentation Hier