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

Mar*_*ark 15 django django-forms

我正在使用内联formset.

我的模特:

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}),
        }
Run Code Online (Sandbox Code Playgroud)

在我的views.py中,我从AuthorForm中创建了这样的表单

form = AuthorForm(request.POST)
Run Code Online (Sandbox Code Playgroud)

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

InlineFormSet = inlineformset_factory(Author, Books)
Run Code Online (Sandbox Code Playgroud)

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

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

Yuj*_*ita 28

尝试:

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


InlineFormSet = inlineformset_factory(Author, Book, form=BookForm)
Run Code Online (Sandbox Code Playgroud)

由Wtower更新

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

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

inlineformset_factory(Author, Book, widgets={'details': Textarea(attrs={'cols': 40}))
Run Code Online (Sandbox Code Playgroud)

  • 这很棒。特别是对于小部件,从 Django 1.6 开始,“inlineformset_factory”有一个“widgets”参数:http://stackoverflow.com/a/30192034/940098 (2认同)