Ich habe ein Modell bekam, der so aussieht,Django ManyToMany Beziehung add() Fehler
class PL(models.Model):
locid = models.AutoField(primary_key=True)
mentionedby = models.ManyToManyField(PRT)
class PRT(models.Model):
tid = ..
Der resultierende viele zu viele Tabelle in mysql gebildet wie
+------------------+------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| PL_id | int(11) | NO | MUL | NULL | |
| PRT_id | bigint(64) | NO | MUL | NULL | |
+------------------+------------+------+-----+---------+----------------+
Nun, wenn pl ist ein Ziel von PL und prt dass von PRT, dann
pl.mentionedby.add(prt)
tun gibt mir einen Fehler
Falscher ganzzahliger Wert: 'PRT Objekt' für Spalte 'prt_id' in Zeile 1"
während
pl.mentionedby.add(prt.tid)
funktioniert gut - mit einer Einschränkung.
Ich kann alle Elemente in pl.mentionedby.all()
sehen, aber ich kann nicht zu einem erwähnten PRT-Objekt gehen und siehe prt.mentionedby_set.all()
.
Weiß jemand, warum das passiert? Was ist der beste Weg, um es zu beheben?
Danke!
Hey Mez - das sind fast die kompletten Modelle. Die anderen Felder sind nur ein Name und eine Kategorie (beide vom Typ text/varchar), also bin ich mir nicht sicher, was Sie meinen, wenn Sie etwas überschreiben. – viksit