如何在Django Shell中调用模型中的方法?

时间:2014-07-06 11:07:21

标签: python django shell django-1.5

我有一个像

这样的简单模型
from django.db import models

class Publisher(models.Model):
    name = models.CharField(max_length=30)
    address = models.CharField(max_length=50)
    city = models.CharField(max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()

    def getJustDomainName(self):
        """ for example, if website is http://www.someweb.com/index.html, return someweb.com """
        return '0'; #TODO

我在这里实际上没有实现方法getJustDomainName,因为我只是以此为例。

我想在Django Shell中测试这个方法。所以我尝试了类似的事情;

Publisher.objects.all()[0].getJustDomainName

但作为回报,我得到了

<bound method Publisher.getJustWebsiteName of <Publisher: Publisher(#1): RandomHouse>>

这不是我所期待的。我期待(并希望)一个返回函数返回的结果。

如何从shell中正确调用此模型方法?

1 个答案:

答案 0 :(得分:7)

您没有调用该方法。你需要这样做:

Publisher.objects.all()[0].getJustDomainName()

注意那里的括号()。你现在的方式只是打印方法本身(<bound method...等不是一个错误。它只是告诉你方法,而不是运行你用{{1像你一样做任何功能)。

<强> P.S。

我猜你是一个javascript(或其他)开发者,他是python的新手(你问的是非常基本的python,你是否正在使用骆驼套管并且在一行的末尾有一个不必要的();通常很好,但是知道python中的约定是使用;来表示函数和方法,即_而不是get_just_domain_name(我会&#39;}我完全摆脱了getJustDomainName,这是多余的)。两者都是有效的,它只是该语言的一种常见惯例。