0

Django (Django 1.5 with Python 2.7.4) アプリで Facebook ログインを作成しようとしています。ログインしてINSERTいるユーザーの場所の名前を MySQL データベースに入力しようとすると、テーブルに括弧付きの文字列が保存されます。そしてカンマ。

たとえば、場所の名前 (JSON オブジェクトをシリアル化し、入力してアクセスする場所facebookMember['location']['name'])が「Turdera」である場合、データベースを調べると、保存されている値は"(u'Turdera',)". 関数を呼び出したときにのみ発生するModel.save()ため、発生しません。関数の作成に直接場所の名前を付けると(Model.objects.get_or_create())

これはJSONです:

{u'username': u'nombre.apellido', u'first_name': u'Nombre',
 u'last_name': u'Apellido', u'verified': True,
 u'name': u'Nombre Apellido', u'locale': u'en_US',
 u'hometown': {u'id': u'104026979634226', u'name': u'Turdera'},
 u'work': [{u'position': {u'id': u'416940894990201',
                          u'name': u'Software Developer'},
            u'start_date': u'0000-00',
            u'employer': {u'id': u'2176879549', u'name': u'Empresa'}}],
 u'email': u'email@hotmail.com',
 u'updated_time': u'2013-08-09T17:30:17+0000', u'birthday': u'05/08/1987',
 u'link': u'https://www.facebook.com/nombre.apellido',
 **u'location': {u'id': u'104026979634226', u'name': u'Turdera'}**,
 u'gender': u'male', u'timezone': -3,
 u'education': [{u'school': {u'id': u'18143905522',
                             u'name': u'ITMaster Professional Training'},
                 u'type': u'College'},
                {u'school': {u'id': u'1089762591',
                             u'name': u'Pontifical Catholic University'},
                 u'type': u'College'}], u'id': u'655273058'}

そして、これは保存関数のコードです:

        obj, created = Member.objects.get_or_create(id=long(facebookMember['id']))

        if (obj.first_login == None):
            obj.first_login=datetime.now()

        obj.first_name=facebookMember['first_name']
        obj.last_name=facebookMember['last_name']
        obj.email=facebookMember['email']
        obj.locale=facebookMember['locale']
        obj.access_token=facebookMember['access_token']
        obj.location=(facebookMember['location']['name'] if 'location' in facebookMember else None),
        obj.gender = Utils().getInitialFromGender(facebookMember['gender'])
        obj.date_of_birth = Utils().getDateAsYYYYMMDD(facebookMember['birthday']) 
        obj.last_login=datetime.now()
        obj.save()

「u」は削除できましたが、括弧とコンマは削除できませんでした。

4

1 に答える 1

1

なぜ行末にコンマがあるのですか? それはあなたが文字列ではなくタプルを持っているとpythonに思わせています:

>>> t = "s" if True else "b"
>>> print t
s
>>> t = ("s" if True else "b")
>>> print t
s
>>> t = ("s" if True else "b"),
('s',)

だから試してください:

obj.location=facebookMember['location'].get('name', None)
于 2013-08-15T18:40:12.953 に答える