簡體   English   中英

Django按空字符串或由空格組成的空字符串過濾

[英]Django filter by empty string or empty string made of spaces

我想按給定名稱過濾,該名稱可以是空字符串或僅包含空格的字符串

例如,我有這些名字

name1 = ''
name2 = '  '
name3 = '     '
name4 = 'john door'

我希望查詢返回所有不帶字符但僅由空格組成的值,在這種情況下名稱為 1、2 和 3

這是我最初的嘗試,但我認為它可以做得更准確。

missing_names = Loan.objects.filter(
    Q(Q(name__startswith=' ') & Q(name__endswith=' ')) | Q(name__exact='')
)

至於問題,您可以使用 Django ORM 提供的正則表達式運算符

例如

missing_names = Loan.objects.filter(name__regex=r'/^\s*$/')

您可以使用Trim數據庫功能刪除所有前導和尾隨空格,然后對其進行過濾:

from django.db.models.functions import Trim


missing_names = Loan.objects.annotate(trimmed_name=Trim('name')).filter(trimmed_name='')

使用 Django 3.2+,您可以使用alias [Django docs]而不是annotate

from django.db.models.functions import Trim


missing_names = Loan.objects.alias(trimmed_name=Trim('name')).filter(trimmed_name='')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM