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

Cod*_*ein 0 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
Run Code Online (Sandbox Code Playgroud)

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

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

Publisher.objects.all()[0].getJustDomainName
Run Code Online (Sandbox Code Playgroud)

但作为回报我得到了

<bound method Publisher.getJustWebsiteName of <Publisher: Publisher(#1): RandomHouse>>
Run Code Online (Sandbox Code Playgroud)

这不是我所期待的.我期待(和期望)一个返回函数返回的结果.

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

yuv*_*uvi 7

你没有调用这个方法.你需要这样做:

Publisher.objects.all()[0].getJustDomainName()
Run Code Online (Sandbox Code Playgroud)

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

PS

我猜你是一个javascript(或其他东西)开发人员,他是python的新手(你问的是非常基本的python,你使用的是camel-casing而且;在一行的末尾是不必要的).在;通常是好,但要知道,在蟒蛇的约定是使用_的函数和方法,即get_just_domain_name不是getJustDomainName(我会一直摆脱了那个just完全,它是多余的).两者都是有效的,它只是该语言的常见惯例.