我想从我的查询集中删除 3 个对象。这在额外列表的帮助下工作,但我很确定应该有更好的方法来使用QuerySet API来做到这一点。但是我还没有弄清楚如何:
我在做什么:
ranks = Rank.objects.all()
remove_ranks = ['Field Marshall', 'Military Attache', 'Mercenary Recruiter']
new_ranks =[]
for rank in ranks:
if not rank.name in remove_ranks:
new_ranks.append(rank)
Run Code Online (Sandbox Code Playgroud)
我如何使用 Django API 做到这一点?
尝试
remove_ranks = ['Field Marshall', 'Military Attache', 'Mercenary Recruiter']
Rank.objects.exclude(name__in=remove_ranks)
Run Code Online (Sandbox Code Playgroud)
它有什么作用?
.exclude 是相反的 .filter
name__in 相当于 SQL 中的 IN 语句
这应该产生一个 sql 查询沿线的东西
Select * from rank where name not in ('Field Marshall', 'Military Attache', 'Mercenary Recruiter')
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2188 次 |
| 最近记录: |