【问题标题】:Django - queries won't return the targeted columnDjango - 查询不会返回目标列
【发布时间】:2017-03-05 19:07:14
【问题描述】:

我想要完成的事情:

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

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

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

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

如果您需要更多信息,请告诉我。

【问题讨论】:

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


    【解决方案1】:

    您需要为管理员创建一个模型,并给它一个 OneToOneField 来关联。然后,您需要创建一个 Member 模型并给它一个与 Association 相关的 ForeignKey。

    那么你应该可以做到:

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

    这假设您的用户对象通过 OneToOneField 链接到管理员

    【讨论】:

    • 它可能有效,但我的模型似乎没有通过模型传递 id。我认为这将通过设置OneToOneForeignKey 自动处理。任何想法我应该如何进行?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-26
    • 1970-01-01
    • 2017-08-16
    • 2011-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多