/ / Non esiste alcun vincolo univoco che corrisponda a determinate chiavi per la tabella di riferimento in django - python, django

Non esiste un vincolo univoco che corrisponda alle chiavi fornite per la tabella di riferimento in django-python, django

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

Estendi 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