2016-07-31 10 views
0

Ich versuche herauszufinden, wie man die Preise zwischen den Städten in meinem Projekt speichert, damit ich bequem mit ihnen arbeiten kann und Admin diese Preise bequem ändern kann.Viele-zu-viele Felder mit Zwischentabellen müssen nicht symmetrisch sein

Ich habe beschlossen, ein through Modell zu erstellen, nach diesem ANSWER, die Ride genannt wird.

Aber wenn ich makemigrations tun, Django zurück:

va_app.City.rides: (fields.E332) Many-to-many-Felder mit Zwischen Tabellen nicht symmetrisch sein müssen.

class City(models.Model): 
    name = models.CharField(max_length=80) 
    country = models.ForeignKey('Country') 
    _close_cities = models.ManyToManyField('City', blank=True, related_name='close_cities_set',symmetrical=True) 
    rides = models.ManyToManyField('self',through='Ride') 

class Ride(models.Model): 
    price = models.DecimalField(max_digits=8, decimal_places=2, blank=True, null=True) 

Wissen Sie, wie es funktioniert?

PS> Das einzige, was ich will, ist einfach Zugang zu können, der Preis (wie City.price(City) oder etwas anderes und Admin der Lage sein, die Preise zu ändern.

Antwort

0

Der Fehler ziemlich klar ist, dass Sie nicht M2M haben Beziehung mit intermediate Tisch und symmetrical=True, muss es symmetrical=False sein

So versuchen, mit:.

rides = models.ManyToManyField('self', through='Ride', symmetrical=False) 

aber ich denke, etwas mit Ihrer Modellstruktur falsch ist, haben Sie zwei M2M-Felder, die auf self zeigen? Ich bin mir nicht sicher, was der Zweck des Rides Modells ist, aber vielleicht sollte dieses Modell nur FKs zu city haben.