0

これは私のモデルクラスです

#!/usr/bin/python

from django.db import models

class olWS(models.Model):
    country=models.CharField(max_length=4)
    comment=models.TextField()

そして、これは、djangoシェルからxmlデータを繰り返し処理しながら、モデルフィールドに再帰的に値を入れようとしている方法です.

>>> from ol.models import olWS
>>> import xml.etree.cElementTree as ET
>>> tree=ET.ElementTree(file='data1')
>>> ws=olWS()
>>> for el in tree.iter():
...     if el.tag=='cusotm_var4':
...         ws.country=el.text
...     if el.tag=='comments':
...         ws.comment=el.text
...
>>> ws.save()
>>> ws.id
1
>>> ws.country
'US'
>>> ws.comment
'where are my cds i ordered'

私が得ているのは、モデルに入力された単一の行です。モデルフィールドのxmlデータで反復されるすべての値を取得するにはどうすればよいですか?

4

3 に答える 3

1

ループ内でインスタンスを作成して保存する必要があります。あなたの例では、ループに値を代入しているだけです。

for el in tree.iter():
    ws = olWS()
    ws.country = el.text if el.tag == 'custom_var4' else ''
    ws.comment = el.text if el.tag == 'comments' else ''
    ws.save()
于 2012-08-04T12:01:32.253 に答える
0

'custom_var_4'XML で要素と要素の順序が固定されており、両方が存在すると仮定すると、次の'comments'ようにコードを改善できます。

>>> for el in tree.iter():
...     if el.tag=='cusotm_var4':
...         ws.country=el.text
...     if el.tag=='comments':
...         ws.comment=el.text
...         ws.save()

注: ws.save()2 番目の場合。

免責事項:要素が1つしか存在しないなどの異常に注意する必要があります.

于 2012-08-04T11:02:05.440 に答える
0

行ごとに1つのモデルインスタンスを実行する必要がありますが、要素はオブジェクトノードの子であるがフラットリストのように見えないため、両方の値をdictに保存し、両方が設定されたらモデルを保存できます.

于 2012-08-04T10:48:36.753 に答える