2012-11-25 29 views
7

im bằng cách sử dụng vObject để tạo vCard. Mọi thứ hoạt động tốt trừ khi tôi không thể thêm nhiều số điện thoại.Tạo nhiều vCard điện thoại bằng cách sử dụng vObject

Ngay bây giờ tôi đang làm điều này:

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 

Như nó hoạt động như một giá trị quan trọng, các điện thoại công việc được ghi đè bởi các số fax.

Bất kỳ ý tưởng nào về việc phải làm đúng không?

Cảm ơn!

+0

lẽ 'v.tel' cần phải truy cập như một danh sách hoặc một mảng, như 'v.tel [0] .type_param = 'WORK''. Hoặc có thể 'v.add()' trả về một đối tượng, đó là những gì bạn nên gán type_param và value vào, như 'tel = v.add ('tel'); tel.type_param = 'WORK'' – Michael

Trả lời

10

Phương pháp add() trả về một đối tượng cụ thể mà có thể được sử dụng để điền vào nhiều dữ liệu hơn:

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

Output:

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 
Các vấn đề liên quan