1

を削除します。ここではは、(削除)を正確に2つの引数(0が与えられた)を取る - 私はフィールドを持つイベントテーブル持っているGoogle App Engineのデータストアは、

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

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

を削除機能である:

@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() 

なるほど次のエラー:FYI

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) 

:これはapp.yamlをからである:

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

ここで何が間違っているかわかりません。何かご意見は?

+1

削除メソッドをオーバーライドしてもよろしいですか? – marcadian

+0

@marcadian私はdb.Modelから派生しており、私はdelete関数をオーバーライドしていません。 – ssk

+0

最終行に[event.delete() 'の代わりに' event.key.delete() 'を試してください([docsによる](https://cloud.google.com/appengine/docs/python/ndb/creating) -entities#Python_Deleting_entities))... –

答えて

1

dbからの削除にはパラメータがないため、削除メソッドをオーバーライドするのは間違いありません。オーバーライドすることはできませんが、db.Modelクラスのdeleteを呼び出さないでください

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() 
関連する問題