J'ai un modèle de base:Comment ajouter une méthode de modèle à une classe existante dans une session interactive (dans iPython)?
class Person(models.Model):
first_name = models.CharField(max_length=50)
last_name = models.CharField(max_length=50)
state = USStateField()
je démarre une session ipython avec:
$ python manage.py shell
>>> from app.models import Person
Comment puis-je ajouter cette méthode de modèle dans la session 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
Je veux être en mesure de tester ces méthodes de modèle sans avoir à ajouter la méthode au fichier models.py puis redémarrer la session shell ipython.
Je semble faire quelque chose de mal parce que lorsque j'ajoute une nouvelle méthode de modèle dans une session interactive, elle ne semble pas liée à la classe comme c'est le cas lorsque la méthode du modèle est définie dans un fichier. Donc, si j'ai créé la méthode du modèle comme ci-dessus et essayé de l'utiliser. par exemple. '>>> personne = Person.objects.filter (last_name =' Franklin')
>>> person.is_midwestern
« is_midwestern'`
'Person' object has no attribute
Pas clair ce que vous voulez. ipython émule le shell python. Donc, il ne peut pas être différent de ce qu'il en est autrement. Explique mieux. –
Sur une note semi-indépendante, je pense que vous manquez une bonne partie des États du Midwest. – Adam
Lorsque j'ajoute une nouvelle méthode de modèle dans une session interactive, elle ne semble pas être liée à la classe comme elle le fait lorsque la méthode du modèle est définie dans un fichier. Donc, si j'ai créé la méthode du modèle comme ci-dessus et essayé de l'utiliser. par exemple. '>>> personne = Person.objects.filter (last_name =' Franklin ') '>>> personne.is_midwestern L'objet' Personne 'n'a pas d'attribut' is_midwestern ' – BryanWheelock