首页 > 解决方案 > 姜戈。查询集中的条件

问题描述

我有一个表格“表格”和一个字段“字段”。我需要使用以下条件过滤表:

if (field.isdigit() and len(strip(field)) <= 4):
    do somethimg

或者

if (field.isdigit() and int(field) <= 10000):
    do somethimg

它在查询中会是什么样子?

Table.objects.filter(condition).update(field="xxx")

谢谢

标签: djangodjango-queryset

解决方案


您可以使用带有__regex查找 [Django-doc]的正则表达式进行检查:

Table.objects.filter(field__regex=r'^\d{,4}$').update(field='xxx')

或者如果允许前导和尾随空格:

Table.objects.filter(field__regex=r'^\s*\d{,4}\s*$').update(field='xxx')

话虽如此,如果您的字段仅包含数字数据,我强烈建议您使用像IntegerField[Django-doc]这样的数字字段。


推荐阅读