模型查询,选择过滤

Umu*_*kan 5 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)
Run Code Online (Sandbox Code Playgroud)

我正在使用对象过滤进行查询,但是下面不能满足我的需求。

Users.objects.filter(gender__contains='male')
Run Code Online (Sandbox Code Playgroud)

您知道一种对选择字段进行查询的方法吗?

bak*_*kal 3

如果MALEFEMALE定义为'ML'and 'FL',则contains='male'或 不区分大小写的版本icontains='male'查询将无用,因为数据库字段包含 'ML' 和 'FL'

您的查询将更符合以下内容:

Users.objects.filter(gender__in=('ML', 'FL'))
Run Code Online (Sandbox Code Playgroud)

但是你应该重用你的常量来保持代码干燥(不要重复自己)

Users.objects.filter(gender__in=(MALE, FEMALE))
Run Code Online (Sandbox Code Playgroud)

或者,排除未定义的性别

Users.objects.exclude(gender=UNDEFINED)
Run Code Online (Sandbox Code Playgroud)