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)
您知道一种对选择字段进行查询的方法吗?
如果MALE和FEMALE定义为'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)