我正在尝试从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查询的字符串的其他CharField中未观察到相同的行为
我很困惑D:,帮助!
答案 0 :(得分:4)
由于拖尾逗号:
friend.location = location_name,
指定元组 (location_name, )
(括号是可选的)
到friend.location