2011-12-26 3 views
0

Я хотел бы иметь модель в Django, которая имеет несколько связанных с ней изображений. Я оцениваю возможные варианты.Немодельное поле в модели Django

Одно изображение для одной модели легко сделать с помощью models.ImageField(...).

Однако, я хотел бы получить массив (или набор) изображений. Это могут быть только пути, а не объекты ImageField.

Проблема в том, как создать это поле в модели Django? Я предполагаю, что мне нужно будет создать поле, которое не является частью models.WhateverField. Это возможно? Могу ли я определить поле не-модели, такие как:

class MyModel: 
    name = models.CharField(max_length=10) 
    picture_list = [] 

, а затем сделать:

def sample_add_picture_view(request): 
    picture = "sample.jpg" 

    model = MyModel.objects.get(id=sample_id) 
    model.picture_list.append(picture) 
    model.save() 

    return HttpResponseRedirect('index.html') 

Может ли это сделать? Если нет, то что может быть лучшим решением? Спасибо !

ответ

4

Вам нужно создать две отдельные модели и связать их с ForeignKey поля, например, так:

class Item(models.Model): 
    name = models.CharField(max_length=255) 

class ItemImage(models.Model): 
    image = models.ImageField(upload_to="item_images") 
    item = models.ForeignKey('Item', related_name="images") 

Это можно сделать пользовательское поле для хранения нескольких элементов, но это действительно плохая идея. Вам нужно будет сериализовать массив в базе данных, что затруднит обслуживание. Использование отдельной модели означает, что вы можете хранить дополнительную информацию, такую ​​как время загрузки, титры изображений и т. Д. С небольшими дополнительными усилиями.

Смежные вопросы