2011-10-25 6 views
0

App Engineでバルクローダーを使用すると、プロパティを特定の値またはNone(またはnull値)に設定できます。 bulkloader.yamlにプロパティを含めないと、それらを設定しないままにすることもできます。App Engineの一括アップローダで値を設定解除する

私がしたいのは、いくつかのエンティティのプロパティを設定し、他のエンティティのプロパティを設定しないことです。これを行う方法はありますか?

答えて

1

バルクローダーの標準のYAML設定ではこれを行う方法はありません。ただし、App Engineに組み込まれているPythonのものを含むほとんどのモデルフレームワークでは、最初にレコードを書き込むときに不足しているプロパティが作成されるため、指定しないままにするのはあまり意味がありません。

+0

おそらく彼らはexpandoプロパティをしている:

は、あなたが空の場合は省略されなければならない「ノート」と呼ばれる文字列プロパティを持っているとしましょう。 –

+0

ありがとうございます。彼らはexpandoプロパティではありません。私が持っているのはStringListPropertyです。私の唯一のオプション(YAMLを使用して)のように見えるのはNoneに設定することです。その場合、ダッシュボードのデータストアビューアには、プロパティがと表示されます。同様のエンティティがリクエストハンドラから作成/格納され、プロパティを省略すると、データストアビューアにはと表示されます。後者のエンティティは、そのプロパティのインデックスには表示されません。 Nick - そのプロパティをリストに設定してレコードを作成すると、そのプロパティが作成時に不足していても、将来のレコードにNone/nullが含まれることを意味しますか? – cv12

+0

@ cv12そのフィールドを指定するモデルクラスを作成した場合は、そのレコードで保存するレコード(新規レコードまたは既存レコード)に、そのフィールドにはnullが設定されます。ただし、リストのプロパティは異なり、まったく表示されません。 –

1

post_import_functionでこれを行うことができます。

def post_process_entity(input_dict, instance, bulkload_state): 
    if instance['notes'] == '': 
    del instance['notes'] 
    return instance 
+0

Drew - この関数の定義はどこにありますか?それは私のパス上のいくつかのモジュールにありますか?YAMLファイルのpython_preambleでモジュールをインポートする必要がありますか? – cv12

関連する問題