开发者

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()
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜