django:选择具有特定属性的多对多对象的最佳方法
作者:互联网
我有一个模型应用程序,它与用户有很多联系.这是代码.
class app(models.Model):
users = models.ManyToManyField(UserProfile)
现在,我要检查具有特定“ id”的Django用户是否在此应用程序的用户列表中退出.经过一番尝试之后,我找到了解决方案.
def user_exists(self,user_obj):
userset = self.app.users.all()
for userprof in userset:
if userprof.user == user_obj:
return True
return False
我该如何改善?
解决方法:
那是非常低效的:它会获取所有相关用户并进行迭代.
ManyToManyField返回一个查询集.因此,您可以使用普通的查询集过滤方法,在单个命令中完成所有操作:
return self.app.users.filter(user=user_obj).exists()
请注意,这使用exists()方法直接从数据库返回布尔值,而不是评估实际对象.
标签:python,django,django-models 来源: https://codeday.me/bug/20191208/2092550.html