2012-11-25 17 views
7

Im Verwenden von vObject zum Erstellen einer vCard. Alles funktioniert gut, außer dass ich nicht mehrere Telefonnummern hinzufügen kann.Erstellen einer vCard mit mehreren Telefonen mithilfe von vObject

Gerade jetzt das ich tue:

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 

Da es als Schlüsselwert arbeitet, wird die Arbeit Telefon durch die Faxnummer überschrieben.

Irgendeine Idee wer es richtig machen?

Danke!

+0

Vielleicht 'v.tel' wie eine Liste, auf die zugegriffen muss oder Array, wie 'v.tel [0] .type_param = 'WORK'. Oder vielleicht 'v.add()' gibt ein Objekt zurück, dem Sie type_param und value wie 'tel = v.add ('tel'); tel.type_param = 'ARBEITEN' – Michael

Antwort

10

Die add() Methode liefert ein bestimmtes Objekt, das verwendet werden kann, mehr Daten zu füllen:

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()) 

Ausgang:

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