Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.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 - Fatal编程技术网

Python Django中的外键过滤

Python Django中的外键过滤,python,django,django-models,Python,Django,Django Models,我们用公司记录模型扩展了Django的用户模型。每个CompanyRecord都是一个用户,都有一个配置文件。当该用户登录到系统时,我们可以在其公司记录中提取其数据 我们的活动模式通过外键与我们的公司记录相关。因此,每个公司记录都有许多活动。我想参加那些与公司记录有关的活动。基本上,CompanyRecord是一个用户。公司记录有很多活动。当同时也是公司记录的用户登录到系统时,我想获取该系统的相关活动。 考虑到这一点,我想将所有的活动都作为一个整体进行筛选,只有与我们的用户相关的活动才会显示出来

我们用公司记录模型扩展了Django的用户模型。每个CompanyRecord都是一个用户,都有一个配置文件。当该用户登录到系统时,我们可以在其公司记录中提取其数据

我们的活动模式通过外键与我们的公司记录相关。因此,每个公司记录都有许多活动。我想参加那些与公司记录有关的活动。基本上,CompanyRecord是一个用户。公司记录有很多活动。当同时也是公司记录的用户登录到系统时,我想获取该系统的相关活动。
考虑到这一点,我想将所有的活动都作为一个整体进行筛选,只有与我们的用户相关的活动才会显示出来

Necessary parts of our data model

    #models.py
    class CompanyRecord(models.Model):
        user = models.OneToOneField(User)
        company_id = models.IntegerField(primary_key=True)
        company_name = models.CharField(max_length=100)



    class Campaign(models.Model):
        campaign_id = models.IntegerField(primary_key=True)
        company_id = models.ForeignKey(CompanyRecord)
        category_id = models.ManyToManyField(Category)
        campaign_title = models.CharField(max_length=100)


And the part of view.py

    @login_required
    def kampanyalar(request):
        if not request.user.is_authenticated():
            return HttpResponseRedirect('/login/')
        company = request.user.get_profile
        userscampaign = Campaign.objects.filter( ###problem### )
        content = {'kampanyalar': kampanyalar, 'sirket':sirket}
        return render_to_response('kampanyalar.html', content, context_instance=RequestContext(request))

通过反转关系并使用
公司来获取
公司记录的所有
活动
。活动集

company = request.user.get_profile()
userscampaign = company.campaign_set.all()
另见:


谢谢您的回答。当我尝试使用您的两行代码时,我得到一个错误:'function'对象没有属性'campaign_set',我最好的猜测是,这是因为我在公司中获得了一个用户配置文件,并尝试使用它的campaign_set,但Python解释器找不到,因为公司是一个“用户”配置文件而不是公司记录。在这种情况下,我认为我必须尝试向下投射?@MertÇelikok我认为这是因为您需要调用
get_profile()
方法。此
campaign\u set
语法仅适用于
CompanyRecord
实例。我认为
get\u profile()
已被弃用。尝试将
company=request.user.companyrecord
设置为记录,而不是用户
company.campaign\u set.all()
应该可以正常工作。