Django Inline Formsets using custom form
I am using inline formsets.
My model:
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}),
}
In my views.py I made the form from the AuthorForm like so
form = AuthorForm(request.POST)
But I also made a formset for the Books
InlineFormSet = inlineformset_factory(Author, Books)
I cannot pass in a BooksForm with wi开发者_如何学运维dgets, so how do I add a textarea widget to the book details.
Is it even possible? Am I missing something obvious?
Try:
class BookForm(ModelForm):
class Meta:
model = Book
widgets = {
'details': Textarea(attrs={'cols': 40, 'rows': 4}),
}
InlineFormSet = inlineformset_factory(Author, Book, form=BookForm)
Update by Wtower
This is great. Specifically for widgets, as of Django 1.6 there is a widgets parameter for inlineformset_factory
Sounds like you can now call
inlineformset_factory(Author, Book, widgets={'details': Textarea(attrs={'cols': 40}))
I dont know if i have understand your question: do you want Book.details rendered as a textarea?
If so, just use a TextField instead a CharField.
class Author(models.Model):
description = models.TextField()
精彩评论