如何在Django中获取所有类型用户(含超级用户)的邮箱地址?
获取Django所有用户邮箱地址的方法
首先,你当前的代码存在两个问题:
User.objects.get(id=2)只能获取单个ID为2的用户,无法拿到所有用户- 属性名写错了,Django User模型的邮箱属性是小写的
email,不是Email
下面是几种获取所有用户邮箱列表的正确方法:
方法1:用values_list直接提取(推荐)
这是最简洁高效的方式,直接从数据库查询中提取邮箱字段:
from django.contrib.auth.models import User # 获取所有用户邮箱的QuerySet,flat=True将结果转为一维结构 all_emails = User.objects.values_list('email', flat=True) # 转为Python列表(如果需要) email_list = list(all_emails) print(email_list)
方法2:过滤掉空邮箱
如果部分用户没有填写邮箱,想排除空值的话:
email_list = list(User.objects.exclude(email='').values_list('email', flat=True))
方法3:遍历所有用户(适合需要额外处理的场景)
如果需要对每个用户做额外逻辑处理,可以遍历所有用户对象:
from django.contrib.auth.models import User email_list = [] for user in User.objects.all(): # 可选:跳过空邮箱 if user.email: email_list.append(user.email) print(email_list)
注意
如果你项目中使用了自定义用户模型,需要把from django.contrib.auth.models import User替换成你自己的用户模型导入,比如:
from myapp.models import CustomUser all_emails = CustomUser.objects.values_list('email', flat=True)
内容的提问来源于stack exchange,提问作者Anshul Gupta
相关产品推荐
相关产品推荐

