私は基本的なモデルがあります:インタラクティブセッション内の既存のクラス(iPython)にモデルメソッドを追加するにはどうすればよいですか?
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
state = USStateField()
私はiPythonセッションを起動する:私はiPythonセッション内でこのモデルのメソッドを追加するにはどうすればよい
$ python manage.py shell
>>> from app.models import Person
を?
>>> 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
私はmodels.pyファイルにメソッドを追加することと、その後iPythonシェルセッションを再起動することなく、これらのモデルのメソッドをテストすることができるようにしたいです。
私は、対話型セッションで新しいモデルメソッドを追加すると、モデルメソッドがファイルで定義されているときと同じように、クラスにリンクされていないように見えるので、何か間違っているようです。
私は上記のようにモデルメソッドを作成し、それを使用しようとした場合。例:
あなたは何を望んでいますか? ipythonはpythonシェルをエミュレートします。だからそれは別のものと違うことはできません。もっと説明してください。 –
半関連性のないメモでは、中西部州の良い塊がないと思います。 – Adam
新しいモデルメソッドをインタラクティブセッションに追加すると、モデルメソッドがファイルで定義されているときと同じように、クラスにリンクされていないように見えます。 上記のようにモデルメソッドを作成し、それを使用しようとするとします。例: '>>> person = Person.objects.filter(last_name =' Franklin ') '>>> person.is_midwestern ' Personオブジェクトには属性がありません 'is_midwestern' – BryanWheelock