我使用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)
答案 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)