我已經在我的模型賬號以下選擇現場字段值。篩選與選擇的對象在Django
GENDER_CHOICES = (
(1, 'Male'),
(2, 'Female'),
(3, 'Other'),
)
我想根據性別搜索用戶。我如何搜索/過濾「男性」或「女性」?
我已經在我的模型賬號以下選擇現場字段值。篩選與選擇的對象在Django
GENDER_CHOICES = (
(1, 'Male'),
(2, 'Female'),
(3, 'Other'),
)
我想根據性別搜索用戶。我如何搜索/過濾「男性」或「女性」?
我打算假設您的模型名爲Account
,並且您有一個gender
字段。
由於您使用的號碼,你的選擇,你可以這樣做:
male_accounts = Account.objects.filter(gender=1)
,您可以用同樣的方法得到了休息。
編輯:
由於您的評論,你想用
male_accounts = Account.objects.filter(gender='male')
你應該改變訪問他們你的GENDER_CHOICES
到:
GENDER_CHOICES = (
('male', 'Male'),
('female', 'Female'),
('other', 'Other'),
)
引用Django的官方文檔:
在每個元組的第一個元素是要在模型設置的實際值,並且所述第二元件是所述人類可讀的名稱。 https://docs.djangoproject.com/en/1.10/ref/models/fields/#choices
但我想這樣做的以下方式:male_accounts = Account.objects.filter(性別=「男」) –
@TariqueSiddique檢查我的編輯答案 – Jimmar
至於我能理解,如果選擇是:
GENDER_CHOICES = (
(1, 'Male'),
(2, 'Female'),
(3, 'Other'),
)
然後你可以使用:
def your_view(request, gender):
if gender == "male" or gender = "Male" :
accounts = Account.objects.filter(gender=1)
elif gender == "female" or gender = "Female":
accounts = Account.objects.filter(gender=2)
else :
accounts = Account.objects.filter(gender=3)
當您在評論中提到, 如果你有20選擇:
def your_view(request, gender):
id_list = [0,1,2,3 ....... 19]
choice_list = ["choice 0","choice 1","choice 2","choice 3",....."choice 19"]
for i in range(20):
if gender == choice_list[i]:
accounts = Account.objects.filter(gender=i)
這是一個好的做法是使用較低的()上的性別,以避免如果仔細檢查? 'lower_gender = gender.lower()' 'if lower_gender ==「male:[...]' – Wilfried
@Wilfried這是一個很好的方法 –
如果選擇字段包含20個元組數據,那麼我必須使用if語句那麼我該怎麼做呢?是否有任何一種廣義的方法來做到這一點? –
你能分享你在使用這個模型嗎? – Jimmar