Question

Je travaille sur un projet Django qui a un grand luminaire qui ne se charge pas:

$ python manage.py loaddata apps/mainsite/fixtures/test_auctions.json 
/Users/cp/bidsite/.ve/lib/python2.6/site-packages/django/db/models/fields/subclassing.py:80: DeprecationWarning: A Field class whose get_db_prep_save method hasn't been updated to take a `connection` argument.
  new_class = super(SubfieldBase, cls).__new__(cls, name, bases, attrs)
/Users/cp/bidsite/.ve/lib/python2.6/site-packages/django/db/models/fields/subclassing.py:80: DeprecationWarning: A Field class whose get_db_prep_lookup method hasn't been updated to take `connection` and `prepared` arguments.
  new_class = super(SubfieldBase, cls).__new__(cls, name, bases, attrs)
/Users/cp/bidsite/.ve/lib/python2.6/site-packages/celery/task/schedules.py:5: DeprecationWarning: celery.task.schedules is deprecated and renamed to celery.schedules
  "celery.task.schedules is deprecated and renamed to celery.schedules"))
Problem installing fixture 'apps/mainsite/fixtures/test_auctions.json': Traceback (most recent call last):
  File "/Users/cp/bidsite/.ve/lib/python2.6/site-packages/django/core/management/commands/loaddata.py", line 174, in handle
    obj.save(using=using)
  File "/Users/cp/bidsite/.ve/lib/python2.6/site-packages/django/core/serializers/base.py", line 165, in save
    models.Model.save_base(self.object, using=using, raw=True)
  File "/Users/cp/bidsite/.ve/lib/python2.6/site-packages/django/db/models/base.py", line 570, in save_base
    created=(not record_exists), raw=raw, using=using)
  File "/Users/cp/bidsite/.ve/lib/python2.6/site-packages/django/dispatch/dispatcher.py", line 172, in send
    response = receiver(signal=self, sender=sender, **named)
  File "/Users/cp/bidsite/apps/mainsite/models.py", line 257, in update_auction_details
    auction_json = instance.as_json()
  File "/Users/cp/bidsite/apps/mainsite/models.py", line 1110, in as_json
    'product': self.product.as_json(),
  File "/Users/cp/bidsite/.ve/lib/python2.6/site-packages/django/db/models/fields/related.py", line 315, in __get__
    rel_obj = QuerySet(self.field.rel.to).using(db).get(**params)
  File "/Users/cp/bidsite/.ve/lib/python2.6/site-packages/django/db/models/query.py", line 349, in get
    % self.model._meta.object_name)
DoesNotExist: Product matching query does not exist.

Le problème est que le StackTrace ne me donne aucun indice sur la ligne du luminaire provoque cette erreur. Comment puis-je déboguer cela? La seule chose à laquelle je peux penser, c'est qu'il y a une fonctionnalité dans Ipythgon où chaque fois que vous exécutez quelque chose et qu'elle soulève une exception, Ipython injecte automatiquement une invite PDB afin que vous puissiez vous déplacer pour comprendre ce qui s'est passé. Comment puis-je faire ça avec ça? Y a-t-il un commutateur de ligne de commande pour Python qui fait cela? Que puis-je faire ici pour déboguer cela?

Était-ce utile?

La solution

Cette recette de Python installera un débogueur qui commence sur les exceptions non apprises:

http://code.activestate.com/recipes/65287-automatiquement-start-the-debugger-on-an-exception/

L'essentiel est d'installer un crochet d'exception dans sy.excepthook qui appelle pdb.pm () lorsqu'il est appelé (bien qu'il soit légèrement plus compliqué que cela).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top