繁体   English   中英

在Django中按外键过滤

[英]Filtering by Foreign Key in Django

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

我们的Campaign模型通过外键与CompanyRecord相关。 因此,每个CompanyRecord都有许多活动。 我想参加与CompanyRecord相关的活动。 基本上,CompanyRecord是用户。 CompanyRecord有许多活动。 当也是CompanyRecord的用户登录系统时,我想获取它的关联Campaign。
有鉴于此,我想将所有广告系列都进行过滤,因为只有与我们用户相关的广告系列才会显示。

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.campaign_set获取CompanyRecord的所有Campaign

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

也可以看看:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM