2017-03-05 74 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