django过滤包含整数的模型

时间:2017-09-10 00:27:14

标签: python django django-models filtering django-queryset

models.py

STORY_CHOICES = (
    (0, 'Computer engineering'),
    (1, 'Mechanical engineering')
    )

views.py

story_list = MyOBJ.objects.all()
query = request.GET.get('q')
if query:
       story_list = story_list.filter(
           Q(story__icontains=query)
       ).distinct()

故事从STORY_CHOICES获取数据,当我尝试搜索并编写“计算机工程”时,它什么都没有。 '0'也给'计算机工程'。 我想把它覆盖到文本并进行字符串搜索。 我尝试直接采取STORY_CHOICES,我遇到了这个失败: FieldError在/ ... 无法将关键字“STORY_CHOICES”解析为字段。选择是:.... 我找不到真正的方法。

1 个答案:

答案 0 :(得分:1)

你可以尝试:

in_filter = []
query = request.GET.get('q', '').lower()
for k, v in MyOBJ().STORY_CHOICES:
    if query in v.lower():
        in_filter.append(k)
if query:
    story_list = story_list.filter(
        Q(story__in=in_filter)
    ).distinct()