2011-12-17 6 views
0

私はすべてのユーザーの性別(男性/女性)を表す必要があるDjangoアプリケーションを構築しています。単一のユーザーは、男性、女性、またはその両方に関心があることを選択できます。このデータは、類似点を見つけるために他のユーザーとの相互参照に使用されます。性別のためのManytoManyFieldははっきりと機能しますが、性別は2つのオプションしか持たないかなり静的なフィールドなので、これを実装する良い方法はありますか?いくつかの種類のマルチセレクションが可能な分野はありますか?それはm2m分野のデータベースの聞き取りを必要としませんか?スタティック/ハードコーディングされたデータのManytoManyFieldの代替?

+0

で、「選択肢」はあなたが望むものです。しかし実際には '選択肢'は 'ForeignKey'の代わりに働くだけです。もしその人が男性と女性の両方であれば? – Jayen

答えて

2

を使用可能な値を制限することができます - ダブルアンダースコア記法のトンと時間をかけて照会し、高価で単なる難しくなりますこと。静的なものについては、具体的にはchoicesが必要です。私は長年にわたって学んできた多くの有益なコーディング手法の

一つは、彼が選択使用方法ジェームズBennetsのブログからアイデアです:

class MyObject(models.Model): 
    MALE = 0 
    FEMALE = 1 
    ROBOT = 2 
    MY_CHOICES = [ 
     (MALE, 'Male'), 
     (FEMALE, 'Female'), 
     (ROBOT, 'Robot'), 
    ] 
    gender = models.IntegerField(choices=MY_CHOICES) 


MyObject.objects.filter(gender=MyObject.ROBOT) 
:基本的に http://www.b-list.org/weblog/2007/nov/02/handle-choices-right-way/

を、聞かせてあなたがこれを行うことができます答えは

0

あなたは、文字列または整数を格納し、間違いなく離れM2Mから敬遠choices

+1

また、2つのブール値フィールドを使用することもできます。男性と女性の関心です。よりユーザーフレンドリーなフォームチューニングを少ししているかもしれませんが、DBの観点からはより意味をなさないと思います。 –

関連する問題