use*_*840 10 python mysql django
最好的方法是什么?
Object.objects.filter(country_send=country).exclude(status__exact='').order_by('-id')
Object.objects.filter(country_send=country).exclude(status__exact='deleted').order_by('-id')
Run Code Online (Sandbox Code Playgroud)
我正在尝试排除没有状态和状态"已删除"的对象.我可以一次订购吗?如果不是最好的方式是什么?
我是Django的新手.
谢谢
Lan*_*don 14
您可以考虑将调用exclude
链接在一起:
Object.objects.filter(country_send=country).exclude(status='').exclude(status='deleted').order_by('-id')
Run Code Online (Sandbox Code Playgroud)
这具有像运算符一样的效果or
,并且比使用Q()
对象更具可读性。
上面 Marcos 的“列表”方法可能最适合您的情况,但如果您在不同的字段上“或”,我的方法会很有用:
Book.objects.exclude(author='Joe').exclude(publish_year='2018')
Run Code Online (Sandbox Code Playgroud)
这将返回所有由 Joe 创作或Books
于 2018 年出版的内容,并排除这些内容。
xec*_*cgr 13
查看Q对象
您的查询将是:
from django.db.models import Q
Object.objects.filter(country_send=country).exclude(Q(status__exact='') | Q(status__exact='deleted')).order_by('-id')
Run Code Online (Sandbox Code Playgroud)
Mar*_*ayo 12
您可以尝试使用"列表".在状态列表中,您可以添加所需的所有单词.
status = ['deleted', '']
Object.objects.filter(country_send=country).exclude(status__in=status).order_by('-id')
Run Code Online (Sandbox Code Playgroud)
更多关于列表:http://www.sthurlow.com/python/lesson06/