我有一个模型字段如下。
GENDER_IN_CHOISES = (
(MALE, _('Male')),
(FEMALE, _('Female')),
(UNDEFINED, _('Undefined')),
)
gender = models.CharField(max_length=2, choices=GENDER_IN_CHOISES, default=UNDEFINED)
我正在使用对象过滤进行查询,但下面的内容无法满足我的需求。
Users.objects.filter(gender__contains='male')
您是否知道如何对选择字段进行查询?
答案 0 :(得分:1)
如果MALE
和FEMALE
定义为'ML'
和'FL'
,那么contains='male'
或不区分大小写的版本icontains='male'
查询会没用,因为数据库字段包含'ML'和'FL'
您的查询将更符合以下方式:
Users.objects.filter(gender__in=('ML', 'FL'))
但是你应该重用你的常量来保持代码DRY(不要重复自己)
Users.objects.filter(gender__in=(MALE, FEMALE))
或者,排除未定义的性别
Users.objects.exclude(gender=UNDEFINED)