我有一个像
这样的简单模型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中正确调用此模型方法?
答案 0 :(得分:7)
您没有调用该方法。你需要这样做:
Publisher.objects.all()[0].getJustDomainName()
注意那里的括号()
。你现在的方式只是打印方法本身(<bound method...
等不是一个错误。它只是告诉你方法,而不是运行你用{{1像你一样做任何功能)。
<强> P.S。强>
我猜你是一个javascript(或其他)开发者,他是python的新手(你问的是非常基本的python,你是否正在使用骆驼套管并且在一行的末尾有一个不必要的()
。 ;
通常很好,但是知道python中的约定是使用;
来表示函数和方法,即_
而不是get_just_domain_name
(我会&#39;}我完全摆脱了getJustDomainName
,这是多余的)。两者都是有效的,它只是该语言的一种常见惯例。