使用自定义表单的Django内联表单集

时间:2011-02-24 14:58:30

标签: django django-forms

我正在使用内联表单集。

我的模特:

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}),
        }

在我的views.py中,我像AuthorForm一样制作了表格

form = AuthorForm(request.POST)

但我也为书籍制作了一套表格

InlineFormSet = inlineformset_factory(Author, Books)

我无法使用小部件传递BooksForm,因此如何在书籍详细信息中添加textarea小部件。

甚至可能吗?我错过了一些明显的东西吗?

2 个答案:

答案 0 :(得分:28)

尝试:

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


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

Wtower更新

  

这很棒。特别是对于小部件,从Django 1.6开始,有一个用于inlineformset_factory的小部件参数

听起来你现在可以打电话了

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

答案 1 :(得分:0)

我不知道我是否理解你的问题:你想把Book.details呈现为textarea吗?

如果是这样,只需使用TextField而不是CharField。

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