2012-11-07 37 views
0

我不得不爲我的查詢編寫自定義where子句。我需要從模型中的字段中獲取Oracle表中顯示的列名。我遍歷MyModel._meta.fields中的模型字段並獲取名稱屬性。在除了一個的情況下,模型字段的名稱是該列的名稱。在例外情況下,字段名稱對於列來說太長,所以Django的syncdb給了這個列一個縮寫名稱。我如何獲取列名?從Django模型字段名獲取縮寫列名

我的字段名:political_contributions_description

列名:political_contributions_de0ec3

我已經試過field.get_attname_column(),如

for field in MyModel._meta.fields: 
    field.get_attname_column() 

但是,這只是給了我下面的元組爲我字段:

('political_contributions_description','political_contributions_description')

順便說一句,超過30個字符的Oracle列將被縮寫。

回答

1

的Try ...

MyModel._meta.get_field('username').column 
+0

沒有工作。它使我獲得全名,而不是數據庫列的縮寫名稱。順便說一句,該列需要超過30個字符才能縮寫,至少Oracle。 – broccoli2000

+0

您可以嘗試使用db_column屬性而不是列。 –

+0

db_column沒有在shell中返回任何內容,可能是None。 (對不起,延遲迴復,週末離開了。) – broccoli2000