模型查询,过滤选择

时间:2015-12-24 10:09:38

标签: python django django-models django-rest-framework

我有一个模型字段如下。

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')

您是否知道如何对选择字段进行查询?

1 个答案:

答案 0 :(得分:1)

如果MALEFEMALE定义为'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)