我的模型帐户中有以下选择字段。
GENDER_CHOICES = (
(1, 'Male'),
(2, 'Female'),
(3, 'Other'),
)
我想根据性别搜索用户。如何搜索/过滤"男性"或者"女性"?
答案 0 :(得分:1)
据我所知,如果有以下选择:
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)
答案 1 :(得分:0)
我将假设您的模型名为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