查询过滤器中的上下文?

时间:2009-12-14 18:59:40

标签: python django

我有一个非常基本的联系模式。该模型包含以下字段:

class Entry(models.Model): 
    name = models.CharField(max_length=64, unique=False)
    organization = models.CharField(max_length=100, unique=False, blank=True, null=True)
    team = models.CharField(max_length=64, unique=False, blank=True, null=True)
    position = models.CharField(max_length=64, unique=False, blank=True, null=True)
    address = models.CharField(max_length=130, unique=False, blank=True, null=True)
    ...  

    def __unicode__(self):
        return u'%s' % self.name

我有不同的模板来显示/编辑单个条目。我想完成以下任务。 查看单个记录时,我希望用户能够单击“组织”并重定向到一个模板,该模板列出该组织的数据库中的所有现有记录。我已经构建了模板,但我不确定视图代码。

我觉得它应该是这样的,但我不认为这是合法的。

def display_organization(request):
    records = Entry.objects.filter(organization__exact=Context)
    t = get_template('org_list.html') 
    html = t.render(Context({'records': records}))
    return HttpResponse(html)

有人可以帮忙吗?

2 个答案:

答案 0 :(得分:3)

您可能希望display_organization URL映射包含组织的参数:

('^organization/(?P<org_name>.+)$', 'myapp.views.display_organization'),

这样,您的display_organization函数也必须接受org_name参数:

def display_organization(request, org_name):
    records = Entry.objects.filter(organization__exact=org_name)
    html = get_template('org_list.html').render({'records': records})
    return HttpResponse(html)

答案 1 :(得分:0)

依赖于URL,你会变得非常复杂。如果只有一两件事能以这种方式发挥作用,那就好了。

我会说,保持简单,只需使用request.GET

def display_organization(request):
    records = Entry.objects.filter(organization__iexact=request.GET['organization'])
    ...