Django: Wie liest man den db_column-Namen eines Modellfeldes?

8

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?

    
user647790 09.03.2011, 08:44
quelle

2 Antworten

17

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:

%Vor%

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.

    
Filip Dupanović 09.03.2011, 10:09
quelle
0

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 .

    
gladysbixly 09.03.2011 09:23
quelle

Tags und Links