2013-06-21 7 views
3

Как я могу создавать/обрабатывать динамические формы на основе пользовательского выбора content_type?Django - динамические формы для GenericForeignKey

Я пишу вид/шаблон для добавления объекта, который модель содержит общий ключ для других моделей:

class MainModel(models.Model): 
     title = models.CharField() 
     author = models.ForeignKey(User) 
... 
     content_type = models.ForeignKey(ContentType) 
     object_id = models.PositiveIntegerField() 
     content_object = generic.GenericForeignKey('content_type', 'object_id') 

class FileModel(models.Model): 
    file = models.FileField() 
    content = generic.GenericRelation(MainModel) 


class UrlModel(models.Model): 
    url = models.UrlField() 
    content = generic.GenericRelation(MainModel) 

Я хотел бы дать пользователю одну страницу (для добавления объектов), где он/она может заполнить поля заголовка, автора, ... и выбрать content_type (выпадающий список) и заполнить поля выбранного content_type, например если выбран FileModel. Затем это должно быть отправлено на просмотр с помощью одной кнопки «отправить», где будут созданы правильные объекты выбранных типов content_type и MainModels. Я подумываю использовать некоторый ajax/jquery, чтобы «развернуть» начальную форму с полями из выбранного content_type, но приветствовал бы любые другие предложения о том, как это сделать правильно.

ответ

1

На всякий случай кто-то выиграет от этого.

Я закончил с двумя формами с различными префиксами: 1) для MainModel, 2) динамически созданный для выбранного content_type. Поля формы 2) динамически добавляются на сайт (по выбору content_type) через функцию загрузки ajax/jquery. Обработка данных & правильное сохранение обрабатывается в представлении.