Ich muss den db_column-Namen verschiedener Modellfelder kennen. Bei einigen Modellen wird der Name explizit durch "db_column = 'foo'" festgelegt, aber die meisten Modelle / Felder haben den von Django automatisch generierten Namen.
Wie kann ich den column_name für all Felder innerhalb der Instanz eines Modells abrufen?
Es gibt eine undokumentierte _meta
API, die in Django weit verbreitet ist, um Modelle zu inspizieren. Es speichert Ihre Modelloptionen für den Typ und bietet etwa zwei Dutzend Methoden und Attribute zum Überprüfen Ihres Modells und seiner Felder. Sie können es verwenden, um alle Modellfelder abzurufen, und aus den Feldern können Sie dann den Spaltennamen abrufen, da sie die gesamte Geschäftslogik angeben:
Dadurch wird ein Tupel zurückgegeben, das den Namen des Attributs (Felds) im Modell und den Namen der Datenbankspalte enthält. Für ein Modellfeld foo = models.IntegerField(db_column='bar')
würde dies ('foo', 'bar')
zurückgeben.
Sie können eine Abfrage in der Datenbank mit Raw SQL durchführen und die Antwort auf diese Frage verwenden:
Wie man Feldnamen bekommt beim Ausführen einer einfachen SQL-Abfrage in Django .