Вставить форму Django в шаблон динамически с помощью JavaScript? - PullRequest
0 голосов
/ 26 марта 2010

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

например, «форма» - это форма django : newcell.innerHTML = {{ form.firstname }}; Проблема заключается в том, что когда я отправляю форму, объект запроса имеет только одно значение (которое не добавляется с помощью javascript). Как я могу получить значения других элементов формы значения, которые добавляются динамически во время выполнения.

Это что-то вроде функции «Присоединить другой файл» в gmail, где пользователю предоставляется поле для загрузки файла, и новые поля добавляются в DOM на лету, когда пользователь нажимает «Присоединить другой файл». Кнопка «плюс»

1 Ответ

0 голосов
/ 26 марта 2010

Вы всегда можете попробовать разделить ваш FileField на FileModel.

Взгляните на следующий псевдокод (как в python, основанном на памяти - сейчас я перешел к clojure).

models.py

class FileModel(models.Model):
  file = models.FileField()
  ...

class ThingToWhichYoureAttaching(models.Model):
  name = models.CharField()
  attachments = models.ManyToManyField(FileModel)
  ...

forms.py

class FileForm(forms.ModelForm):
  class Meta:
    model=FileModel

class ThingForm(forms.ModelForm):
  attachments = forms.MultipleChoiceField()#override the manytomany form field with style field of your choice.
  class Meta:
    model=ThingToWhichYoureAttaching

Когда они всплывают в окне с помощью кнопки PLUS, покажите FileForm, но на главной странице оставьте ThingForm без изменений. Вы также можете иметь начальный FileField на главной странице с ThingForm для людей, у которых нет JavaScript. Обязательно обработайте FileForm ДО ThingForm, чтобы файл был доступен для вещи.

При обработке всплывающей формы вы можете использовать AJAX (я рекомендую jquery ) для отправки FileForm на сервер и возврата разметки для вставки файла в поле Attachments.

...