其他分享
首页 > 其他分享> > django:选择具有特定属性的多对多对象的最佳方法

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