次の形式で位置情報を返す Facebook グラフ クエリからデータを保存しようとしています。
friend: {
location: {
id: "106078429431815",
name: "London, United Kingdom"
},
}
または、ユーザーがその変数を設定していない場合、または「null」に設定されている場合は、ロケーション キーが完全に欠落しています。
モデルの場所フィールドは次のように定義されています。
location = models.CharField(max_length=255, blank=True, null=True)
次のコードを使用してモデルにデータを保存しています。これは、レコードを作成するための最初のクエリと、将来値が変更された場合の更新の両方に対応します。
friend = get_facebook_friend(friend_id=friend_id)
try:
location_name = data['location'].get('name', '')
except:
location_name = ''
if friend:
friend.name = data['name']
friend.location = location_name,
friend.full_clean()
friend.save()
else:
friend = Friend(
name=data['name'],
location=location_name)
friend.full_clean()
friend.save()
これは、データベース内の Location 列の値を次のように保存する最初の挿入では、かなりうまくいくようです。
- 'London, United Kingdom'
- ''
- NULL
ただし、その後の更新では、データベース テーブルに奇妙な結果が格納されます。たとえば、次のようになります。
(u'London, United Kingdom',)
('',)
(None,)
これと同じ動作は、Facebook クエリからの文字列を格納する他の CharFields では見られません。
私はかなり混乱しています D:, 助けて!