Django Allauth过滤器"电子邮件地址"在管理员

时间:2015-05-06 12:24:03

标签: django django-allauth


我使用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" - > "电子邮件地址"但我不知道会是哪个查询集。我会感谢任何提示。

祝你们玩得愉快!

这里的解决方案: - >

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) 

1 个答案:

答案 0 :(得分:3)

由于它是第三方应用,因此您首先需要在自己的admin.py中覆盖其管理员。请查看答案here以获取示例。

对于queryset,您检查EmailAddress模型的allauth模型。它使用“用户”字段链接到用户。所以,你可以这样链接你的查询:

 qs = super(EmailAddressAdmin, self).get_queryset(request)
    if request.user.is_superuser:
        return qs
    return qs.filter(user__profile__country=request.user.profile.country)