Одна страница для создания родительского объекта и связанных с ним дочерних объектов - PullRequest
2 голосов
/ 26 мая 2010

Это мой самый первый пост на этом удивительном сайте, из которого я нашел ответы на несколько сложных вопросов. Слава сообществу!

Я новичок в мире Django, поэтому я надеюсь найти здесь помощь от некоторых экспертов по Django. Заранее спасибо.


Модель товара:

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

ItemImage модель:

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

Как видно из приведенных выше определений модели, каждый объект Item может иметь много объектов ItemImage.


Мои требования следующие:

  1. Одна веб-страница, которая позволяет пользователям создать новый элемент при загрузке изображения, связанные с элементом. Объекты Item и ItemImages должны быть созданы в базе данных все вместе, когда нажата кнопка «Сохранить» на странице.
  2. Я создал переменную в пользовательском конфигурационном файле с именем NUMBER_OF_IMAGES_PER_ITEM . На основе этой переменной система генерирует количество полей изображения на элемент.

Вопросы:

  1. Какими должны быть формы и шаблон? Можно ли использовать ModelForm для достижения требований?
  2. Что касается функции просмотра, что мне нужно остерегаться, кроме необходимости сохранять Item перед объектами ItemImage?

1 Ответ

0 голосов
/ 26 мая 2010

Учитывая, что вы используете поля загрузки файлов, я не уверен, что это правильный подход для веб-приложения. Что если проверка имени элемента не удалась? Если вы снова отобразите форму, все поля загрузки файлов станут пустыми, и пользователь должен будет заполнить их снова.

Техническая сторона - ModelForm подойдет для модели Item, но вы также должны использовать набор форм для ItemImage. Подробнее см. http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#using-an-inline-formset-in-a-view.

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