Django - 查询不会返回目标列

时间:2017-03-05 19:07:15

标签: python django python-2.7 python-3.x django-models

我想要完成的事情:

管理员正在登录以查看其群组中的所有成员。 我得到的回报是来自其他组的所有成员,我不想要。 我只希望管理员看到他小组中的成员。

我没有得到我想要的过滤器。

在这里搜索解决方案,没有运气,仍然是新手,所以感谢您的帮助!

管理员\ models.py

class Administrator(AbstractUser):
    ...
    asoc_name = models.CharField(max_length=100)


    class Meta:
        db_table = 'Administrator'

构件\ models.py

from pl.admin.models import Administrator

class Member(models.Model):
    member_no = models.AutoField(primary_key=True)
    asoc_name = models.CharField(max_length=50)
    ...

    class Meta:
        db_table = 'Member'

class Association(models.Model):
    asocnumber = models.AutoField(primary_key=True)
    asoc_name = models.CharField(max_length=50, null=True, blank=True)


    class Meta:
        db_table = 'Association'


class member_asoc(models.Model):
    asocnumber = models.OneToOneField(Association)
    member_no = models.OneToOneField(Member)
    user = models.OneToOneField(Administrator)


    class Meta:
        db_table = 'member_asoc'

Views.py

class member_overview(ListView):

    model = Member
    template_name = 'member/member_overview.html'

    def get_queryset(self, *args, **kwargs):
        user = self.request.user
        return Member.objects.filter(asoc_name=user)

如果您需要更多信息,请与我们联系。

1 个答案:

答案 0 :(得分:0)

您需要为Administrator创建一个模型,并为其提供OneToOneField。然后,您需要创建一个Member模型并为其提供一个ForeignKey,将其与Association关联。

然后你应该能够做到:

Member.objects.filter(association=self.request.user.administrator.association)

这假设您的User对象使用OneToOneField

链接到Administrator