2012-11-25 20 views
7

imはvObjectを使用してvCardを作成します。複数の電話番号を追加できない場合を除き、すべてがうまく機能します。今私はこれをやっているvObjectを使用して複数の電話vCardを作成する

v.add('tel') 
v.tel.type_param = 'WORK' 
v.tel.value = employee.office_phone 

v.add('tel') 
v.tel.type_param = 'FAX' 
v.tel.value = employee.fax 

それがキー値として働いていたように、職場の電話はファックス番号によって上書きされます。

誰がそれを正しく行うかについてのアイデアはありますか?

ありがとうございます!

+0

多分 'v.tel'リスト又はようにアクセスする必要があります'v.tel [0] .type_param = 'WORK''のような配列です。あるいは、 'v.add()'は、 'tel = v.add( 'tel')のようにtype_paramとvalueを割り当てるべきオブジェクトを返します。 tel.type_param = 'WORK' – Michael

答えて

10

add()方法は、より多くのデータを埋めるために使用することができる特定のオブジェクトを返す:

import vobject 

j = vobject.vCard() 
o = j.add('fn') 
o.value = "Meiner Einer" 

o = j.add('n') 
o.value = vobject.vcard.Name(family='Einer', given='Meiner') 

o = j.add('tel') 
o.type_param = "cell" 
o.value = '+321 987 654321' 

o = j.add('tel') 
o.type_param = "work" 
o.value = '+01 88 77 66 55' 

o = j.add('tel') 
o.type_param = "home" 
o.value = '+49 181 99 00 00 00' 

print(j.serialize()) 

出力:

BEGIN:VCARD 
VERSION:3.0 
FN:Meiner Einer 
N:Einer;Meiner;;; 
TEL;TYPE=cell:+321 987 654321 
TEL;TYPE=work:+01 88 77 66 55 
TEL;TYPE=home:+49 181 99 00 00 00 
END:VCARD 
関連する問題