У меня есть базовая модель:Как добавить метод модели к существующему классу в рамках интерактивного сеанса (в iPython)?
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
state = USStateField()
пускает сеанс IPython с:
$ python manage.py shell
>>> from app.models import Person
Как добавить этот метод модели в рамках сессии 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
Я хочу, чтобы быть в состоянии проверить эти методы модели без добавления методы к файлу models.py, а затем перезапуска оболочки сеанса IPython.
Я вроде бы делаю что-то неправильно, потому что, когда я добавляю новый метод модели в интерактивный сеанс, он, похоже, не связан с классом, как это происходит, когда метод модели определен в файле.
Так что если я создал метод модели, как указано выше, и попытался его использовать. , например. '>>> человек = Person.objects.filter (last_name =' Франклин)
>>> person.is_midwestern
«is_midwestern'`
'Person' object has no attribute
Непонятно, что вам нужно. ipython эмулирует оболочку python. Так что это не может быть иначе. Объясните лучше. –
На полу-несвязанной ноте я думаю, что вам не хватает хорошего куска штатов Среднего Запада. – Adam
Когда я добавляю новый метод модели в интерактивный сеанс, он, похоже, не связан с классом, как это происходит, когда метод модели определен в файле. Итак, если я создал метод модели, как указано выше, и попытался его использовать. , например. '>>> person = Person.objects.filter (last_name =' Franklin ') '>>> person.is_midwestern Объект Person не имеет атрибута' is_midwestern ' – BryanWheelock