2017-03-05 71 views
0

我想完成的操作:Django - 查询不会返回目标列

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

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

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

管理\ 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) 

让我知道如果你需要更多的信息。

回答

0

您需要为管理员创建一个模型并将其设置为关联OneToOneField。然后,您需要创建一个成员模型并为其指定一个与关联相关的ForeignKey。

那么你应该能够做到:

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

这是假设你的用户对象链接到管理员与OneToOneField

+0

它可能工作,但我的模型似乎并没有通过模型来传递的id 。我想通过设置“OneToOne”和“ForeignKey”来自动处理。任何想法我应该如何继续? – Niknak