在Django中通过外键过滤

时间:2014-04-28 18:39:23

标签: python django django-models

我们使用CompanyRecord模型扩展了Django的用户模型。每个CompanyRecord都是一个拥有个人资料的用户。当该用户登录系统时,我们可以在其公司记录中提取数据。

我们的广告系列模型通过外键与我们的CompanyRecord相关联。因此,每个CompanyRecord都有许多广告系列。我想参加那些与CompanyRecord相关的广告系列。基本上,CompanyRecord是用户。 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))

1 个答案:

答案 0 :(得分:0)

通过撤消关系并使用Campaign获取CompanyRecord的所有company.campaign_set

company = request.user.get_profile()
userscampaign = company.campaign_set.all()

另见: