2016-11-17 4 views
1

多くの型を持つことができるdjangoモデルを持っている場合(まれに変更することは想定されていますが、おそらく新しいものが追加される可能性があります)、intでそれを行う方が良いでしょうか?Int vsフィールドの選択肢の文字列

from enum import Enum 
class Places(Enum): 
    gym = 0 
    coffee_shop = 1 
    home = 2 
    garage = 3 
    office = 4 
    study = 5 
    shed = 6 

文字列として使う方が良いですか?

GYM = 'gym' 
COFFEE_SHOP = 'coffee_shop' 
HOME = 'home' 
GARAGE = 'garage' 
OFFICE = 'office' 
STUDY = 'study' 
SHED = 'shed' 

彼らは、人間が読める形式だから、私は、文字列が好き(およびドキュメントはなどFR、JR、SR、のような文字列を使用しているようです)が、私は多くの場合、これを行うにはint型を使用している人々を参照してください。

誰かが理由を説明できますか?

+0

「より良い」とはどういう意味ですか? – Sayse

+0

私はあなたの質問を少し修正して(私が思うと)、これが間違っていた場合にはロールバックしてください。 – Sayse

+0

@Sayse申し訳ありません - 私はより速い検索を認識していませんでした。なぜ人々がどちらか一方に傾いているのか理解しようとしていました。 – arooo

答えて

0

私はしばしばintを使ってこれを行う人を見ます。 誰かが理由を説明できますか?

人は小さな整数(SmallIntegerField)を使用します。これは、文字列よりもデータベースから値を取得するほうがはるかに高速です。同じように、リスト内の整数を文字列よりも速く見つけることができます。

これは、Django Rest Frameworkを使用する場合、消費者はデータを扱う際に実際にどのような数字が表示されているかを理解しておく必要があります。もちろん、この問題を解決する方法はあります。

1

なぜ両方ですか?

複数の場所に同じデータがある場合は、文字列の代わりにはるかに小さいintを格納します。人間が直面していることは、intから文字列に変換できます。

メモリフットプリントが小さく、パフォーマンスはほぼゼロです。

これらの変換を行い、そのクラスから継承するクラスに列挙型を拡張することは、かなりのアプローチになります。

関連する問題