Django-Migrationen – wie man es vergessen lässt?

Ich habe eine neue Django-App mit dem Runserver-Dev-Server, der in einem Hintergrundfenster läuft, skizzieren, um die Netzwerkverdrahtung zu verfolgen, und das war kurz in meinem Modell:

class Interface(models.Model): name = models.CharField(max_length=200) # (blah) class Connection(models.Model): interface_from = models.ForeignKey(Interface, related_name="connections") interface_to = models.ForeignKey(Interface, related_name="connections") source = models.CharField(max_length=32) 

Bevor ich merkte, dass ich nicht den gleichen verwandten Namen für zwei Felder haben konnte. Ich glaube, ich muss etwas Besonderes schreiben, um alle Verbindungen zu finden, die mit einer Schnittstelle zusammenhängen, da sie vielleicht das "zu" oder "von" Ende der Verbindung sein können (interessiert an irgendwelchen Einblicke auf eine schönere Art, das zu tun – wie ein Feld "Set")

  • Pandas read_csv importiert Ergebnisse in Fehler
  • Emacs: Pass Argumente zu untergeordneten Python-Shell während Pufferauswertung
  • Im Wörterbuchausgang wird in PYTHON nicht wie erwartet erwartet
  • Eine PYTHONSTARTUP-Datei für ein bestimmtes Verzeichnis
  • Warum kann ich nicht datatime.date?
  • Kundenspezifischer bericht durch python odoo 9
  • An diesem Punkt hatte ich keine Makemigrationen gemacht, aber beim Stoppen des Servers und meiner Migrationen bekomme ich:

     ERRORS: autodoc.Connection.interface_from: (fields.E304) Reverse accessor for 'Connection.interface_from' clashes with reverse accessor for 'Connection.interface_to'. HINT: Add or change a related_name argument to the definition for 'Connection.interface_from' or 'Connection.interface_to'. 

    Auch wenn es keinen Kampf mehr gibt. Ich sehe kein Migrationsverzeichnis irgendwo – das war der anfängliche Pass an den Modellen – also woher kommt die Erinnerung an diesen Fehler nach einem Neustart des Dev Servers?

    Bearbeiten: Um es klarer zu machen, sieht mein Verbindungsmodell jetzt wie folgt aus:

     class Connection(models.Model): interface_from = models.ForeignKey(Interface) interface_to = models.ForeignKey(Interface) source = models.CharField(max_length=32) 

    2 Solutions collect form web for “Django-Migrationen – wie man es vergessen lässt?”

    In deinem ersten Beispiel:

     class Connection(models.Model): interface_from = models.ForeignKey(Interface, related_name="connections") interface_to = models.ForeignKey(Interface, related_name="connections") 

    Sie erzählen Django, um zwei verschiedene connections auf Interface für die Rückwärtsbeziehungen zurück zu Connection , was offensichtlich nicht funktioniert.

    In deinem zweiten Beispiel:

     class Connection(models.Model): interface_from = models.ForeignKey(Interface) interface_to = models.ForeignKey(Interface) 

    Du sagst dem Django, dass er seinen Standard- connections_set Namen für zwei verschiedene Attribute für die Rückwärtsbeziehungen zurück zu Connection , was auch nicht funktioniert.

    Das Fix ist, related_name='+' (wie @Ivan sagte ), um die Rückwärtsbeziehungen vollständig zu deaktivieren oder zwei explizit zwei verschiedene related_name Attribute zur Verfügung zu related_name , so dass die Backward Relationship Attribute 'Namen nicht kollidieren.

    Falls du keine Rückwärtsbeziehung related_name='+' addiere related_name='+' zu deiner Felddefinition. Aus dem doc :

     user = models.ForeignKey(User, related_name='+') 
    Python ist die beste Programmiersprache der Welt.