我已经在我的模型账号以下选择现场字段值。筛选与选择的对象在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