管理员中的 Django Allauth 过滤器 "Email addresses"
Django Allauth filter "Email addresses" in Admin
我正在使用 django-allauth,我有一个问题。为了过滤我的用户模型的管理站点中的数据,我使用以下代码:
def get_queryset(self, request):
qs = super(UserAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(profile__country=request.user.profile.country)
它让管理员用户(不是超级用户)只能看到来自他们国家的用户的表格。
我还想过滤由 allauth 创建的名为 "Accounts" - > "Email Addresses" 的标准列中的数据,但我不知道那是哪个查询集。如果有任何提示,我将不胜感激。
祝大家有个愉快的一天!
解决方法在这里:->
admin.py 看起来像这样:
from allauth.account.models import EmailAddress
from allauth.account.admin import EmailAddressAdmin
class CustomAllauthAdmin(EmailAddressAdmin):
def get_queryset(self, request):
qs = super(EmailAddressAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(user__profile__country=request.user.profile.country)
admin.site.unregister(EmailAddress)
admin.site.register(EmailAddress, CustomAllauthAdmin)
由于它是第三方应用程序,您首先需要在自己的 admin.py 中覆盖其管理。查看答案 here 以获取示例。
至于查询集,您检查 EmailAddress 模型的 allauth 模型。它使用 'user' 字段链接到用户。因此,您可以像这样链接您的查询:
qs = super(EmailAddressAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(user__profile__country=request.user.profile.country)
我正在使用 django-allauth,我有一个问题。为了过滤我的用户模型的管理站点中的数据,我使用以下代码:
def get_queryset(self, request):
qs = super(UserAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(profile__country=request.user.profile.country)
它让管理员用户(不是超级用户)只能看到来自他们国家的用户的表格。
我还想过滤由 allauth 创建的名为 "Accounts" - > "Email Addresses" 的标准列中的数据,但我不知道那是哪个查询集。如果有任何提示,我将不胜感激。
祝大家有个愉快的一天!
解决方法在这里:->
admin.py 看起来像这样:
from allauth.account.models import EmailAddress
from allauth.account.admin import EmailAddressAdmin
class CustomAllauthAdmin(EmailAddressAdmin):
def get_queryset(self, request):
qs = super(EmailAddressAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(user__profile__country=request.user.profile.country)
admin.site.unregister(EmailAddress)
admin.site.register(EmailAddress, CustomAllauthAdmin)
由于它是第三方应用程序,您首先需要在自己的 admin.py 中覆盖其管理。查看答案 here 以获取示例。
至于查询集,您检查 EmailAddress 模型的 allauth 模型。它使用 'user' 字段链接到用户。因此,您可以像这样链接您的查询:
qs = super(EmailAddressAdmin, self).get_queryset(request)
if request.user.is_superuser:
return qs
return qs.filter(user__profile__country=request.user.profile.country)