Сохранить общие изображения из узлов XML - PullRequest
0 голосов
/ 15 июля 2010

Я пытаюсь обновить свои записи, используя XML ... пока первая часть задачи выполнена .... меня интересует, как перенести мои изображения на сохраненный объект (я используюimagekit для обработки изображений (кстати).Мои модели выглядят так:

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 ]

1 голос
/ 15 июля 2010

Вы смотрели на xml_models ? Не уверен, что это правильно для вас, потому что я не на 100% уверен в том, что вы спрашиваете Тем не менее, он заботится о взаимоотношениях с моделями, которые используют XML очень гладко, поэтому может решить вашу проблему случайно: -)

Я думаю, xml_models будет работать для вас. Дайте мне знать!

0 голосов
/ 16 июля 2010

Наконец-то это было решено:

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)

Подумал, что это может помочь кому-то с подобной проблемой позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...