2016-07-18 1 views
1

私は初心者ですし、名前付きグループにどのようにして選択するのだろうか、djangoのドキュメンテーションでは "利用できる選択肢を名前付きグループに集めることもできます組織的目的のために使用されるべきである。ドキュメントに基づいて、私は移行を作り、私のモデルのオブジェクトを作成しても問題はありませんDjangoの選択肢のための名前付きグループを実装する正しい方法

python_2_unicode_compatible 
class Music(models.Model): 
    Media_Choices=[('Audio',(('vinyl','Vinyl'), 
        ('cd','CD'),)) 
        ,('Video',(('vhs','VHS Tape'), 
           ('dvd','DVD'),)), 
        ('unknown','Unknown'),] 

    Music_Media=models.CharField(max_length=10,choices=Media_Choices) 

    def __str__(self): 
     return self.get_Music_Media_display() 

以下のいくつかのモデルを作成しようと、私の質問は、(特に人間可読な名前のグループの選択肢のタプルをアクセスもする方法ですオプションの場合)?それは私のコードの権利ですか? (名前付きグループに選択肢を実装する方法)、私が間違っている場合は私を修正してください。ありがとうございました。私の悪い英語には申し訳ありません

+0

私には良いようです。あなたの直面している問題は何ですか? –

+0

@MohammadMustaqeem私はグループのオプションにアクセスしたい、Media_Choices 'Audio'でMusicオブジェクトを持っていると言うと、 'Audio'オプション(この場合は 'Vinyl'または 'CD')を表示できますか?質問する(どのように音楽オブジェクトを介してアクセスする)、それは可能です..? –

答えて

0

人が読める名前を取得するには、Model.get_FOO_display()メソッドを使用する必要があります。

あなたのケースでは、このトリックを行う必要があります。

#lets say song is a Music object 
print song.get_Music_Media_display() 

この方法の詳細はこちらです。 https://docs.djangoproject.com/en/1.9/ref/models/instances/#django.db.models.Model.get_FOO_display

+0

考えてくれてありがとう、はい私は人間が読める名前を取得する方法を知っています。この場合、名前付きグループから利用可能な選択肢の読みやすい名前を検索する方法を意味します。私のMedia_choicesが「Audio」であるのと同じように、私があなたの示唆を実装すると、人の読書名は「Audio」のみを検索し、Audio(「Vinyl」および/または「CD」)の選択肢を取り出すにはどうすれば可能ですどうやって....?ありがとうございます –

+0

私はグループ化が組織目的のためだけであると思います。私はそれらをオブジェクトに割り当てることはできないと思います。 'vhs'、 'dvd'、 'cd'、 'vinyl'、 'unknown'のいずれかを割り当てることができます。 「オーディオ」または「ビデオ」ではありません。このように考えると、テーブルMusicでレコードを作成するときに、これらの5つのオプションの1つを列の値として取るように制約しています。今、どのようなメディアの関係データを 'vinyl'なのか調べたいのであれば、あなたのデータベースはスキーマ/ Pythonコードではなく、この情報を保存するのが理想的です。だから、メディアの種類を保持するテーブルを作成するという考え方が考えられます。 – Vasif

+0

説明をありがとう、ありがとう –

関連する問題