1

次の形式で位置情報を返す 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:, 助けて!

4

1 に答える 1

4

末尾のコンマが原因:

friend.location = location_name, 

タプル (location_name, )(角かっこはオプション)をに 割り当てますfriend.location

于 2013-01-20T10:08:00.500 に答える