Python Django中的外键过滤
我们用公司记录模型扩展了Django的用户模型。每个CompanyRecord都是一个用户,都有一个配置文件。当该用户登录到系统时,我们可以在其公司记录中提取其数据 我们的活动模式通过外键与我们的公司记录相关。因此,每个公司记录都有许多活动。我想参加那些与公司记录有关的活动。基本上,CompanyRecord是一个用户。公司记录有很多活动。当同时也是公司记录的用户登录到系统时,我想获取该系统的相关活动。Python Django中的外键过滤,python,django,django-models,Python,Django,Django Models,我们用公司记录模型扩展了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()
应该可以正常工作。