0

次のようにインスタンス化された、インスタンス化されたentity_pb.EntityProtoからプロパティを削除したいと思います。

pb = entity_pb.EntityProto()
prop1 = pb.add_property()
prop1.set_name('prop1')
prop2 = pb.add_property()
prop2.set_name('prop2')

もうprop1が欲しくないとしましょう。どうすれば削除できますか?

この質問は、プロトバフをAppEngineデータストアに挿入することに関するものですが、__scatter__プロパティを持つ既存のプロトバフを配置することはできません。エンティティを配置しようとすると、次のエラーが返されます。BadRequestError: cannot store entity with reserved property name '__scatter__'

4

2 に答える 2

1

の結果を操作できるpb.property_list()ので、これは機能します。

 properties = pb.property_list()
 properties[:] = [e for e in properties if e.name() != '__scatter__']
于 2013-03-13T19:46:53.930 に答える
0

protobufのドキュメントを見ると、個々のEntityProtoを操作することについては何もありません。entity_pb.py内のコードにも関連するメソッドが表示されていないため、「実際には想定されていない場合でも、オブジェクトを直接操作してみましょう」というアプローチを採用しました。

props = element.property_
for i in range(len(props)):
    if props[i].name() == '__scatter__':
        props.pop(i)
        break
于 2013-03-13T19:19:22.890 に答える