2017-03-05 1 views
0

私が達成したいこと:Django - クエリでターゲット列が返されません

管理者がログインして、グループ内のすべてのメンバーを表示します。 私が返すのは、私が欲しくない他のグループのすべてのメンバーです。 私は自分のグループに所属するメンバーをAdminに見せたいだけです。

私はフィルターが欲しくないです。

ここで解決策を探しているのは運がありませんし、まだ初心者でもありがとうございます。

管理者の\ 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

Administratorのモデルを作成し、それにOneToOneField to Associationを付ける必要があります。次に、メンバモデルを作成してAssociationに関連付けるForeignKeyを与える必要があります。

次にあなたが行うことができるはず:

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

これはあなたのユーザーオブジェクトはそれがうまくいくかもしれないOneToOneField

+0

で管理者にリンクされていることを前提としていますが、私のモデルは、モデルによってIDを渡していないようです。 'OneToOne'と' ForeignKey'を設定することで自動的に処理されるでしょう。どのように進めるべきなのか? – Niknak

関連する問題