Ci sono molte domande relative a questo errore su SO, ma o le capisco in modo errato o non si applicano a questo caso.
Ho il seguente codice in photo/models.py
.
class Photo(EmptyModelBase):
# there"s a lot of fields in this model.
E il seguente in points/models.py
class Label(EmptyModelBase):
photo = models.ForeignKey(Photo, related_name="labels")
Considerando che funziona, ho capito che significa che Photo
il modello detiene una chiave unica, poiché Label
può avere un photo
campo con una chiave estera per il Photo
modello.
Quindi, ho voluto aggiungere un altro modello a points/models.py
, che detiene anche una chiave straniera per Photos
class Material(EmptyModelBase):
photo = models.ForeignKey(Photo, related_name="material")
Quando provo ad aggiungere queste modifiche al database, ottengo il seguente errore:
django.db.utils.ProgrammingError: there is no unique constraint matching given keys for referenced table "photos_photo"
Quello che pensavo fosse questo errore è che la fotoil modello non ha un vincolo univoco, ovvero le voci nel modello fotografico non sono necessariamente uniche, pertanto la chiave esterna potrebbe non sapere quale voce utilizzare. Tuttavia, posso aggiungere la chiave esterna in Etichetta al modello, in modo che la spiegazione non appaia sensata.
risposte:
-1 per risposta № 1Estendi i tuoi modelli con django.db.models.Model quindi avrà un campo unico al suo interno, ad esempio id.
Si prega di fare riferimento alla documentazione Qui