如何在Django中的视图之外访问模型?

时间:2018-11-30 08:25:14

标签: python django

我正在创建一个数据库站点,所需的功能之一是在导航栏中具有一个按钮,该按钮可使用户使用模型中的随机对象。 Django Cookbook提供了an example of a random function for a model,我已实现。

但是,我似乎无法从导航栏调用此函数,因为导航栏位于included上方{% block content %}的单独的html文件中,该文件可以显示在导航栏的每个页面上现场。但是,这意味着它永远不会看到模型对象本身,因此我无法在导航栏中使用{{object.get_random}}访问该函数。

我的一个主意是在导航栏中使用这样的链接

<a href="{% url 'roma:category_list.object.get_random.get_absolute_url' %}">Random Category</a>

其中category_list是传递了模型的视图。我希望从那里从模型中获取一个对象,然后从get_random函数中获取,最后从get_random函数返回的对象中获取URL。 这显然行不通。 有没有可以让我访问导航栏html中的功能的解决方案?

1 个答案:

答案 0 :(得分:2)

我不会在渲染模板时进行随机化,而是会链接到具有“ / random”之类的网址的专用视图。调用该URL时,视图可以进行随机化并将您重定向到随机模型。