2010-05-17 5 views
11

Я хотел бы иметь возможность использовать индивидуальную форму в modelformset_factory. Например:Использование пользовательской формы на фабрике modelformset?

models.py

class Author(models.Model): 
    name = models.CharField() 
    address = models.CharField() 

class AuthorForm(ModelForm): 
    class Meta: 
     model = Author 

views.py

def test_render(request): 
    myModelFormset = modelformset_factory(Author) 
    items = Author.objects.all() 
    formsetInstance = myModelFormset(queryset = items) 
    return render_to_response('template',locals()) 

Приведенный выше код работает нормально, но обратите внимание, что я не использую AuthorForm. Вопрос в том, как я могу заставить modelformset_factory использовать AuthorForm (который я планирую настроить позже) вместо создания формы по умолчанию?

ответ

20

Я думаю, вы должны быть в состоянии передать пользовательскую форму модели следующим образом:

myModelFormset = modelformset_factory(Author, form=AuthorForm) 
+1

Спасибо. Я нашел это, посмотрев на источник вскоре после того, как я разместил вопрос. Я удивлен, что я не наткнулся на этот вариант в документации. У вас есть ссылка на любую документацию, которая указывает, что это вариант? – jamida

+0

Я думаю, что ближе всего к документации упоминается, что это означает, что ModelFormset - это просто «Formset», который знает о модели, поэтому вы можете использовать аргументы из formet_factory в modelformset_factory. В документации для formet_factory указано, что вы можете указать класс формы. Похоже, существует аналогичное соответствие от modelformset_factory к inlineformset_factory. – jcdyer

+0

здесь у вас есть ссылка в django docs https://docs.djangoproject.com/en/1.5/ref/forms/models/ – maazza

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