2011-02-24 6 views
14

인라인 양식 세트를 사용하고 있습니다.Django Inline 사용자 정의 양식을 사용하는 Formsets

내 모델

: 난 그렇게

form = AuthorForm(request.POST) 

처럼 AuthorForm에서 양식을 만든 그러나 나는 또한 책에 대한 해당 formset을 만들어 내 views.py에서

class Author(models.Model): 
    description = models.CharField(max_length=100) 

class Book(models.Model): 
    author = models.ForeignKey(Author) 
    details = models.CharField(max_length=100) 

class AuthorForm(ModelForm): 
    class Meta: 
     widgets = { 
      'description': Textarea(attrs={'cols': 40, 'rows': 4}), 
     } 

InlineFormSet = inlineformset_factory(Author, Books) 

위젯이 포함 된 BooksForm을 전달할 수 없으므로 책 세부 정보에 텍스트 영역 위젯을 추가하려면 어떻게해야합니까?

심지어 가능합니까? 나는 명백한 것을 놓치고 있는가?

답변

27

시도 : Wtower

에 의해

class BookForm(ModelForm): 
    class Meta: 
     model = Book 
     widgets = { 
      'details': Textarea(attrs={'cols': 40, 'rows': 4}), 
     } 


InlineFormSet = inlineformset_factory(Author, Book, form=BookForm) 

업데이트이 중대하다. 특히 위젯, 장고 1.6으로 inlineformset_factory

의 위젯 매개 변수가 이제 내가 당신의 질문을 이해 만약 내가 잘 모릅니다

inlineformset_factory(Author, Book, widgets={'details': Textarea(attrs={'cols': 40})) 
+1

실제로 효과가 있니! 나는 어느 문서도 쉽게 찾을 수 없었고, 나는 그 출처를 보았다. –

+1

이것은 아주 좋습니다. Django 1.6에서 위젯을 위해 특별히'inlineformset_factory'를위한'widgets' 매개 변수가 있습니다 : http://stackoverflow.com/a/30192034/940098 – Wtower

+1

@Wtower nice update. 추가되었습니다! –

0

를 호출 할 수 있습니다 같은 소리입니다 : 당신은 Book.details을 원하는가 텍스트 영역으로 렌더링 되었습니까?

그렇다면 CharField 대신 TextField를 사용하십시오.

class Author(models.Model): 
    description = models.TextField() 
+0

이것은 텍스트 필드에는 맞지만, 무언가를 찾고있는 라디오 버튼, 체크 박스 등도 찾고 있습니다. 예제를 간단하게 유지하려고했습니다. 감사 – Mark

관련 문제