Django 从queryset中删除(过滤掉)对象
我想从queryset中删除3个对象。这项工作需要一个额外的列表的帮助,但我很确定应该有一个更好的方法来完成这项工作。但是我还没有弄清楚是怎么回事: 我在做什么:Django 从queryset中删除(过滤掉)对象,django,django-orm,Django,Django Orm,我想从queryset中删除3个对象。这项工作需要一个额外的列表的帮助,但我很确定应该有一个更好的方法来完成这项工作。但是我还没有弄清楚是怎么回事: 我在做什么: 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 = 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)
如何使用Django API实现这一点?试试看
remove_ranks = ['Field Marshall', 'Military Attache', 'Mercenary Recruiter']
Rank.objects.exclude(name__in=remove_ranks)
它有什么作用
.exclude
与.filter
name\uu-in
相当于SQL中的in语句
这应该会产生一个sql查询
Select * from rank where name not in ('Field Marshall', 'Military Attache', 'Mercenary Recruiter')
试一试
它有什么作用
.exclude
与.filter
name\uu-in
相当于SQL中的in语句
这应该会产生一个sql查询
Select * from rank where name not in ('Field Marshall', 'Military Attache', 'Mercenary Recruiter')
谢谢,这确实有效。你能给我一个小例子说明“in”实际上是做什么的吗?因为到目前为止,我一直在尝试使用exclude Edit:谢谢你更新post我的更新澄清了它们的功能吗?如果没有,我很乐意延长我的职位。在任何情况下,快速查看一下哪个选项可以让您大致了解Django QuerySet Apibtw:如果这个答案对您来说似乎是正确的,您能接受吗?:-)我不得不再等10分钟才能接受:)谢谢,这确实有效。你能给我一个小例子说明“in”实际上是做什么的吗?因为到目前为止,我一直在尝试使用exclude Edit:谢谢你更新post我的更新澄清了它们的功能吗?如果没有,我很乐意延长我的职位。在任何情况下,快速查看一下哪个选项可以让您大致了解Django QuerySet Apibtw:如果这个答案对您来说似乎是正确的,您能接受吗?:-)我不得不再等10分钟才能接受:)