[英]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='')
)
您可以使用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.