Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用Django筛选器基于用户配置文件限制对数据的访问_Python_Django_Django Models_Django Views - Fatal编程技术网

Python 使用Django筛选器基于用户配置文件限制对数据的访问

Python 使用Django筛选器基于用户配置文件限制对数据的访问,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我使用的是Django 1.11和Django Registration Redux 1.5,我对编程比较陌生 我正在创建一个应用程序,该应用程序应根据登录用户的组织显示数据 我创建了以下模型: class Organization(models.Model): organization_name=models.CharField(max_length=200) organization_type=models.CharField(max_length=50) organization_code

我使用的是Django 1.11和Django Registration Redux 1.5,我对编程比较陌生

我正在创建一个应用程序,该应用程序应根据登录用户的组织显示数据

我创建了以下模型:

class Organization(models.Model):
organization_name=models.CharField(max_length=200)
organization_type=models.CharField(max_length=50)
organization_code=models.IntegerField()
organization_krapin=models.CharField(max_length=11)
organization_contactname=models.CharField(max_length=200)
organization_contactnumber=models.IntegerField()
tariff=models.ForeignKey("Tariff", on_delete=models.SET_NULL,
    blank=True,
    null=True,
    )

def __unicode__(self):
    return str(self.organization_name)

class OrganizationUserProfile(models.Model):
user=models.OneToOneField(User, unique=True)
organization=models.ForeignKey("Organization")

def __unicode__(self):
    return str(self.user)   

class OrganizationOrders(models.Model):
REBATE_OPTIONS = (
    ('Y', 'Yes'),
    ('N', 'No'),
    )
mobile_number=models.IntegerField()
order_status=models.BooleanField(default=False)
scored_data_id=models.CharField(max_length=200, null=True)
order_datetime=models.DateField(default=timezone.now)
order_udatetime=models.DateField(null=True, blank=True)
order_rebate_status=models.CharField(max_length=1, choices=REBATE_OPTIONS, default='N')
organization=models.ForeignKey("Organization")

def __unicode__(self):
    return str(self.mobile_number)
这是我的观点

from __future__ import unicode_literals
from django.shortcuts import render
from .models import OrganizationOrders001, OrganizationUserProfile

def orders(request):
if request.user.is_authenticated:

    context = {
        'organization_orders': OrganizationOrders.objects.all(),
    }
    return render(request, 'orders.html', context)
else:
    return render(request, 'base.html')
我想根据在OrganizationUserProfile中注册的用户配置文件的组织筛选OrganizationOrders

然后,我将仅显示OrganizationOrders,其中organization字段与当前登录用户的organization字段匹配


我将非常感谢您的回答。

此查询过滤器应满足您的要求

from __future__ import unicode_literals
from django.shortcuts import render
from .models import OrganizationOrders, OrganizationUserProfile

def orders(request):
    if request.user.is_authenticated:
        context = {
            'organization_orders': OrganizationOrders.objects.filter(organization__organizationuserprofile__user=request.user.pk),
        }
        return render(request, 'orders.html', context)
    return render(request, 'base.html')

查询上的此筛选器应执行您想要的操作

from __future__ import unicode_literals
from django.shortcuts import render
from .models import OrganizationOrders, OrganizationUserProfile

def orders(request):
    if request.user.is_authenticated:
        context = {
            'organization_orders': OrganizationOrders.objects.filter(organization__organizationuserprofile__user=request.user.pk),
        }
        return render(request, 'orders.html', context)
    return render(request, 'base.html')

谢谢你,但是我得到了以下错误:ValueError异常值:无法查询“dennis1”:必须是“Organization”实例。dennis1是登录用户的用户名。查询必须属于dennis1所属的组织。@mdennism我已经编辑了查询,我认为您可能需要使用PK。谢谢您,但是我收到以下错误:ValueError异常值:无法查询“dennis1”:必须是“organization”实例。dennis1是登录用户的用户名。查询必须属于dennis1所属的组织。@mdennism我已经编辑了查询,我认为您可能需要使用pk