Как построить форму в формате сетки с заголовком, img, флажком для каждого элемента в Django? - PullRequest
0 голосов
/ 12 декабря 2011

У меня есть текстовый файл, который отформатирован с заголовками, расположением изображений и кучей другой информации.Я написал класс Python, который будет анализировать этот текстовый файл и создавать объект, который содержит заголовок, изображение и информацию, связанную с ним.Он возвращает список этих объектов.

Я хочу отобразить каждый объект в этом списке в Django, используя HTML-таблицу.Если пользователь установит флажок сохранения, а затем отправит форму, все отмеченные объекты будут сохранены в базе данных.По сути, каждый элемент таблицы будет отражать определенный объект и будет выглядеть так:

format

Так что в простом случае у меня есть что-то вроде этого:

Class ImageContainerModel(models.Model):
      title = models.CharField()
      img = models.CharField()
      info = models.CharField()

Я не уверен, как это написать.Я делал что-то подобное раньше, но это было очень уродливо.Ранее я получил список объектов и передал его в форму в качестве аргумента выбора, затем изменил виджет CheckboxSelectMultiple, изменив способ отображения html.

Я могу сделать это снова,но есть ли более простой способ?Я думал о том, чтобы просто передать список объектов непосредственно в шаблон, а затем построить таблицу оттуда с помощью тегов шаблона, но я не уверен, как вставить флажки для каждого из них, а затем проверить его в моих представлениях.

1 Ответ

0 голосов
/ 12 декабря 2011

Рассматривали ли вы использование Model formset ? Единственная проблема здесь заключается в том, что для этого требуется правильно сформированный набор запросов, что означает, что вам нужно сначала сохранить объекты ImageContainer, а затем удалить их, если пользователь не нажмет кнопку «Сохранить».

Вне моей головы, что-то вроде этого может работать с некоторыми изменениями:

--- В Forms.py ---

class ImageContainerSaveForm(forms.Form):
    confirm_save = forms.BooleanField(required=False)

    def save(self, *args, **kwargs):
        confirm_save = self.cleaned_data.get('confirm_save', False)

        if not confirm_save:
            self.instance.delete()

--- На ваш взгляд ---

ImageContainerFormSet = modelformset_factory(ImageContainerModel, fields=(), form=ImageContainerSaveForm, extra=0)

containers = get_containers()

if request.method == 'POST':
    formset = ImageContainerFormSet(request.POST, queryset=containers)

    if formset.is_valid():
        formset.save()
        return redirect('somewhere')

else:
    formset = ImageContainerFormSet(queryset=containers)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...