Bry*_*ock 1 python django ipython
我有一个基本的模型:
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
state = USStateField()
Run Code Online (Sandbox Code Playgroud)
我启动了一个iPython会话:
$ python manage.py shell
>>> from app.models import Person
Run Code Online (Sandbox Code Playgroud)
如何在iPython会话中添加此模型方法?
>>> def is_midwestern(self):
... "Returns True if this person is from the Midwest."
... return self.state in ('IL', 'WI', 'MI', 'IN', 'OH', 'IA', 'MO')
>>> person = Person.objects.filter(last_name='Franklin')
>>> person.is_midwestern
True
Run Code Online (Sandbox Code Playgroud)
我希望能够测试这些模型方法,而无需将该方法添加到models.py文件,然后重新启动iPython shell会话.
我似乎做错了,因为当我在交互式会话中添加新的模型方法时,它似乎没有像在文件中定义模型方法时那样链接到类.
因此,如果我创建了上面的模型方法并尝试使用它.例如'>>> person = Person.objects.filter(last_name ='Franklin')'is_midwestern'`
>>> person.is_midwestern
'Person' object has no attribute
为什么你不能这样做Person.is_midwestern = is_miswestern例如
>>> class Person:
... def __init__(self): self.mid = True
...
>>> def is_midwestern(self): return self.mid
...
>>> Person.is_midwestern = is_midwestern
>>> p = Person()
>>> p.is_midwestern()
True
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
859 次 |
| 最近记录: |