2009-09-18 6 views
5

complexという名前のフィールドとtypeという名前のフィールドが必要なモデルがあります。これらは両方ともPythonの予約名です。 PEP 8によると、それぞれcomplex_type_という名前にする必要がありますが、djangoでは後ろにアンダースコアを付けたフィールドを持つことはできません。これを処理する適切な方法は何ですか?Pythonの予約名であるdjangoモデルフィールドを命名するための適切なイディオムは何ですか?

答えて

4

これらの例で問題はありません。ただcomplextypeを使用してください。あなたは非常に限られた範囲(クラス定義自体)でのみシャドーイングしています。その後、あなたは、ドット表記法(self.type)を使用してそれらにアクセスすることがありますので、あいまいではありません。

Python 2.6.2 (release26-maint, Apr 19 2009, 01:58:18) 
[GCC 4.3.3] on linux2 
Type "help", "copyright", "credits" or "license" for more information. 
>>> class Foo(object): 
...  type = 'abc' 
... 
>>> f = Foo() 
>>> f.type 
'abc' 
>>> class Bar(object): 
...  complex = 123+4j 
... 
>>> bar = Bar() 
>>> bar.complex 
(123+4j) 
>>> 
+1

技術的に、あなたが与えた例が予約されていない言葉を。彼らは組み込みです。予約語(印刷やラムダなど)は実際の問題を引き起こします。 – jcdyer

1

実際にdb_column="complex"引数を使用してフィールドを別のものにしたいですか?

関連する問題