从XML节点保存通用图像

时间:2010-07-15 11:48:05

标签: django xml-parsing

我正在尝试使用XML更新我的记录...到目前为止,任务的第一部分已经完成....我想知道的是如何将我的图像放到保存的对象上(我正在使用用于图像处理的图像包BTW)。我的模型看起来像这样:

class Photo(ImageModel):
    name = models.CharField(max_length=100)
    original_image = models.ImageField(upload_to='photos')
    num_views = models.PositiveIntegerField(editable=False, default=0)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

    class IKOptions:
        spec_module = 'my_app.specs'
        cache_dir = 'photos'
        image_field = 'original_image'
        save_count_as = 'num_views'

class Room(models.Model):
    ...
    images = generic.GenericRelation('Photo', blank=True, null=True)
    ...

我正在使用的XML如下所示:

<room>
    <sq_ft>...</sq_ft>
    <size>...</size>
    <bedrooms>...</bedrooms>
    <images>
        <image>photos/IMG_3406.JPG</image>
        <image>photos/IMG_3416.JPG</image>
        <image>photos/IMG_3409.JPG</image>
    </images>
</room>

我的问题是如何在循环浏览XML文件时获取给定房间的图像并将其保存到该记录中。

更新1 到目前为止,我已尝试过这一点:

if room.getElementsByTagName('image'):
    photo = ""
    for v in room.getElementsByTagName('images'):
        photo = v.childNodes[0].nodeValue
        room_photo = Photo.objects.create(content_object = room, 
            object_id = room.id, original_image = photo)

这确实保存了照片(有点),但是original_image字段总是空白的,这意味着我在上面的代码中做错了。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你看过xml_models了吗?不确定它是否适合你,因为我不是100%肯定你在问什么。但是,它确实处理了与使用XML非常流畅的模型的关系,因此可以顺便解决您的问题: - )

认为 xml_models将适合您。让我知道!

答案 1 :(得分:0)

最终解决这个问题:

imagelist = room.getElementsByTagName('image')
if imagelist:
    for child in imagelist:
        photo = child.childNodes[0].nodeValue
        room_photo = Photo.objects.create(content_object = room, 
                    object_id = room.id, original_image = photo)

认为这可能会帮助后来遇到类似问题的人。