1

J'ai une table d'événements avec des champs:supprimer() prend exactement 2 arguments (0 donné) - Google App Engine Datastore Supprimer

class Event(db.Model): 
    """ 
    Event Model 
    """ 

    account = db.UserProperty(required=True) 
    event_id = db.StringProperty(required=True) 

est ici la fonction de suppression:

@staticmethod 
def delete(account, 
      event_id): 
    """Delete Event by event_id 
    Args: 
     account  - account 
     event_id - event_id 
    Raises: 
     None 
    """ 
    if account is not None and event_id is not None: 
     event = Event.find_by_account_and_event_id(account, event_id) 

     # if a valid event 
     if event is not None: 
      logging.info('DELETING event with event_id = ' + event.event_id + ' account= ' + str(event.account)) 
      event.delete() 

Je vois l'erreur suivante:

2016-06-15 15:45:45.180 DELETING event with event_id = 2a5e5422-dec5-4e87-a462-e2551e3f3cf8 account= test.user 
E 2016-06-15 15:45:45.186 delete() takes exactly 2 arguments (0 given) 

Pour votre information: Ceci est de app.yaml:

version: 1 
runtime: python27 
threadsafe: true 
api_version: 1 

Je ne suis pas sûr de ce qui ne va pas ici. Des pensées?

+1

est-ce que vous remplacez par hasard la méthode de suppression? – marcadian

+0

@marcadian Je dérive de db.Model et je ne remplace pas la fonction de suppression. – ssk

+0

Essayez 'event.key.delete()' au lieu de 'event.delete()' dans votre dernière ligne ([conformément aux documents] (https://cloud.google.com/appengine/docs/python/ndb/creating -entities # Python_Deleting_entities)) ... –

Répondre

1

Je suis sûr que vous substituez la méthode delete, car la suppression de db n'a pas de paramètre. Peut ne pas être redéfini mais vous n'appelez pas la suppression dans la classe db.Model

In [51]: class X(db.Model): 
      pass 
In [52]: x = X() 
In [53]: x.put() 
Out[53]: datastore_types.Key.from_path(u'X', 6052396701319168L, _app=u's~<removed>') 
In [54]: x.delete()