如何在Django模板中显示过滤的对象?

时间:2013-09-12 23:13:49

标签: django django-forms django-templates django-views

假设我的模型显示如下。

class Opt(models.Model):
    optID = models.CharField()
    availabiltities = models.ManyToManyField(Available)
    lastdatemodified = models.DateTimeField()
    ....
    ....

此外,opt_ID不是primary_key

我希望能够在html模板中显示与opt_id相关的所有字段。我有一个页面显示该模型的所有Opt_id。每个Opt_ID都是一个链接,应该显示我之前提到的所有字段......

在views.py中我正在写作,

def Optschedule(request, opt_id = 1):
   return render_to_response('show.html', {'OptSchedule', Opt.objects.filter(optID=Opt_id)})

在show.html中

{% for entries in OptSchedule %}
    {{entries.lastdatemodified}}
    {{entries.availabilities}}
{% endfor %}

我想,我不明白我们如何将参数传递给view函数,以便它在视图中使用这些参数用于查询集。

感谢。

1 个答案:

答案 0 :(得分:0)

我理解你的问题,但你遗漏了一些Django的基础知识

您可以在请求中将参数传递给视图,并正确配置您的urlconf。

但首先,让我们使用小写字母作为函数名称,由Python PEP8预先包含:

  

函数名称应为小写,并根据需要用下划线分隔,以提高可读性。

def opt_schedule(request, opt_id):
    opt_schedule = Opt.objects.get(id=opt_id)
    return render_to_response('show.html', {'OptSchedule': opt_schedule})

您正在将opt_id传递给您的视图,此opt_id来自您的urlconf,假设:

(r'^show/(\d+)/$', opt_schedule),

此urlconf表示除了请求对象之外,您还为视图opt_schedule传递了一个十进制整数。当您调用www.example.com/show/1/时,将调用视图opt_schedule并接收请求对象和小数1.在查看函数内,您要查询具有id(或pk)= 1的Opt对象,并将其传递给您的上下文,名称为“OptSchedule”

现在,您可以在模板中访问对象属性,例如:

{{ OptSchedule.lastdatemodified }}