App Engineでバルクローダーを使用すると、プロパティを特定の値またはNone(またはnull値)に設定できます。 bulkloader.yamlにプロパティを含めないと、それらを設定しないままにすることもできます。App Engineの一括アップローダで値を設定解除する
私がしたいのは、いくつかのエンティティのプロパティを設定し、他のエンティティのプロパティを設定しないことです。これを行う方法はありますか?
App Engineでバルクローダーを使用すると、プロパティを特定の値またはNone(またはnull値)に設定できます。 bulkloader.yamlにプロパティを含めないと、それらを設定しないままにすることもできます。App Engineの一括アップローダで値を設定解除する
私がしたいのは、いくつかのエンティティのプロパティを設定し、他のエンティティのプロパティを設定しないことです。これを行う方法はありますか?
バルクローダーの標準のYAML設定ではこれを行う方法はありません。ただし、App Engineに組み込まれているPythonのものを含むほとんどのモデルフレームワークでは、最初にレコードを書き込むときに不足しているプロパティが作成されるため、指定しないままにするのはあまり意味がありません。
post_import_functionでこれを行うことができます。
def post_process_entity(input_dict, instance, bulkload_state):
if instance['notes'] == '':
del instance['notes']
return instance
Drew - この関数の定義はどこにありますか?それは私のパス上のいくつかのモジュールにありますか?YAMLファイルのpython_preambleでモジュールをインポートする必要がありますか? – cv12
おそらく彼らはexpandoプロパティをしている:
は、あなたが空の場合は省略されなければならない「ノート」と呼ばれる文字列プロパティを持っているとしましょう。 –
ありがとうございます。彼らはexpandoプロパティではありません。私が持っているのはStringListPropertyです。私の唯一のオプション(YAMLを使用して)のように見えるのはNoneに設定することです。その場合、ダッシュボードのデータストアビューアには、プロパティがと表示されます。同様のエンティティがリクエストハンドラから作成/格納され、プロパティを省略すると、データストアビューアにはと表示されます。後者のエンティティは、そのプロパティのインデックスには表示されません。 Nick - そのプロパティをリストに設定してレコードを作成すると、そのプロパティが作成時に不足していても、将来のレコードにNone/nullが含まれることを意味しますか? –
cv12
@ cv12そのフィールドを指定するモデルクラスを作成した場合は、そのレコードで保存するレコード(新規レコードまたは既存レコード)に、そのフィールドにはnullが設定されます。ただし、リストのプロパティは異なり、まったく表示されません。 –