我想知道该怎么做。 所以我有一个EmailAddress类,它与我的User类有一个ForeignKey关系
class EmailAddress(models.Model):
user = models.ForeignKey(allauth_app_settings.USER_MODEL, verbose_name=_('user'))
email = models.EmailField(unique=app_settings.UNIQUE_EMAIL,
verbose_name=_('e-mail address'))
我还有一个UserProfile类,它与提到的User具有OneToOneField关系,如下所示:
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
attribute= models.CharField("attr", max_length=150, blank=False)
现在在admin.py中我想过滤用户,以便登录到admintool的当前用户只能看到来自共享某些属性的用户的电子邮件。问题是该属性保存在UserProfile中,我需要通过电子邮件到达那里。
基本上我不知道如何访问UserProfile中的'attribute'。我知道我想通过电子邮件找到该电子邮件所属的用户来过滤用户,然后将他的“属性”与发送请求的用户进行比较,以决定是否向他显示。
def get_queryset(self, request):
user = [User whos email is in the list]
qs = [the queryset]
[and then]
return qs.filter([filter so the user attribute = the request.user attribute])
我正在使用allauth btw。如果你想知道什么
allauth_app_settings.USER_Model
代表。
度过美好的一天!
答案 0 :(得分:0)
您需要使用双下划线语法来跟踪关系。
qs.filter(user__userprofile__attribute=request.user.attribute)