GAE Launcher の前回の更新以来、データストアに作成される ID が大きすぎます。5330010158992982016 のように、Javascript ではこれらの数値が丸められるため、これは私にとって問題です。
たとえば、JS では
> a = 533001015899298254645
> 533001015899298270000
[{"pk": 5330010158992982016, "model": " .... }] のような JSON の読み取り、
$.getJSON(' ...
$.each(data, function(i,item){ ...
item['pk'] = 533001015899298270000 instead of 533001015899298254645
}
}
GAE サーバーで同じ問題が発生するかどうかはわかりません。IDサイズを制限するアイデアはありますか?
Django を使用していますが、Django と Google モデルで同じ問題が発生しています。
アップデート:
プロジェクトのすべての JavaScript コードの変更を強制しない解決策を見つけました。私の場合は多いです。誰もが言うように、最良の方法は PK (または ID) を文字列として使用することです。しかし、私はdjangoシリアライザーを使用しており、私のバージョンとJSONでは、PKは数値として設定されています。簡単な解決策は、シリアライザークラスでこれを変更することです(または、オリジナルを拡張してこれを変更する新しいシリアライザーを作成します):
def end_object(self, obj):
self.objects.append({
"model" : smart_unicode(obj._meta),
"pk" : smart_unicode(obj._get_pk_val(), strings_only=**False**),
"fields" : self._current
})
self._current = None
strings_only を False に設定します。JSON の pk を引用符で囲みます。すべての JavaScript コードは変更なしで機能します。
問題は... djangoシリアライザーに強制的に文字列として配置させる他の方法はありますか?