从django模型获取值以供进一步使用

时间:2017-01-26 00:32:12

标签: django

我有一个包含3个字段的模型(名称,网址,日期)。如何在我的视图中获取url并将其放入方法中?

sites = Site.objects.all().order_by('date')[:3]

我需要从url(http://www.example.com到example.com)获取主机。我有一个班级来完成这项任务:

class SiteThumb():

    def get_site_thumb(self, url):
        host = urlparse(url).hostname
        if host.startswith('www.'):
            host = host[4:]
        return(host)

我想稍后在我的模板中使用它(类似于{{site.url}}但是使用与特定'site'对象相关的变量'host'。我无法处理它。我可以在另一个视图中只有一个站点:

def site(request, category_slug, subcategory_slug, id):

我可以简单地将id分配给特定对象。在我的基本视图中

def index(request):

我必须加载几个对象。谢谢你的任何线索。

1 个答案:

答案 0 :(得分:1)

一种方法是模型方法。

例如。 Site是一个模型,其中包含上述三个字段的网址,名称和日期。现在,您可以为Site模型定义模型方法,您可以在模板中访问该方法。它可以这样做。

class Site(models.Model):

    url  = field
    name = field
    date = field


    def hostname(self):
        #It is copy paste of your implementation
        host = urlparse(url).hostname
        if host.startswith('www.'):
            host = host[4:]
        return host

在每个Site实例的模板中,此方法可以{{ site.hostname }}进行访问。