Я пытаюсь сохранить данные из postgres с помощью API. Данные не сохраняются правильно. Пожалуйста, помогите мне понять, почему это происходит. Это xml
<instance>
<data id="training_tracker_v4">
<start/>
<end/>
<Welcome_to_the_REC_S_roject_beneficiaries/>
<group_ip2dp64>
<Please_enter_the_date_of_the_meeting/>
<What_type_of_meeting_are_you_h/>
</group_ip2dp64>
<For_participants_wit_onal_ID_Card_holders/>
<group_kh9aw05 jr:template="">
<Please_scan_the_barc_e_on_the_ID_Card_now/>
</group_kh9aw05>
Тег group_kh9aw05 рекурсивен, поэтому он имеет несколько значений внутри. Я хотел бы сохранить каждую запись внутри group_kh9aw05 с instanceID и formID (которые находятся вне группы).
Это мой код:
group = dom2.getElementsByTagName('group_kh9aw05')
for g in group:
try:
if len(g.childNodes) > 0:
Farmer_Id = g.getElementsByTagName('Please_scan_the_barc_e_on_the_ID_Card_now')[0].childNodes[0].toxml()
if Farmer_Id is not None:
real_farmerid = Farmer_Id
instanceID = dom2.getElementsByTagName('orx:instanceID')
if instanceID[0].firstChild is not None:
real_instanceID = instanceID[0].firstChild.nodeValue
else:
real_instanceID = "None"
dataelements = dom2.getElementsByTagName('data')
form_ID = dataelements[1].getAttribute("id")
except:
pass
try:
lv_ODK = Barcodedata()
lv_ODK.barcode = real_farmerid
lv_ODK.instanceID = real_instanceID
lv_ODK.form_ID = form_ID
lv_ODK.save()
except:
pass
В postgres Я получаю только одна запись на instanceID. Я пользуюсь django Пожалуйста, помогите!
SQL код
CREATE TABLE public.odk_barcodedata
(
id integer NOT NULL DEFAULT nextval('odk_barcodedata_id_seq'::regclass),
barcode character varying(254) COLLATE pg_catalog."default",
"instanceID" character varying(254) COLLATE pg_catalog."default",
"form_ID" character varying(254) COLLATE pg_catalog."default",
workshop_date date,
workshop_country character varying(254) COLLATE pg_catalog."default",
subject character varying(254) COLLATE pg_catalog."default",
CONSTRAINT odk_barcodedata_pkey PRIMARY KEY (id),
CONSTRAINT "odk_barcodedata_instanceID_barcode_28fce750_uniq" UNIQUE ("instanceID", barcode)
)