给予
class Library(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
for_library = models.ForeignKey(Library, null=False, on_delete=models.PROTECT)
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
说我已经创建了一个ID为1的Library
对象,并想以某种形式为此选定的图书馆创建多本书。
在表单中,我有:
class LibraryIDForm(ModelForm):
for_library = TypedChoiceField(coerce='int', empty_value=None)
class Meta:
model = Library
fields = ()
def __init__(self, *args, **kwargs):
super(LibraryIDForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.layout = Layout(
Div(
Field('for_library'),
HTML("""<p class="h4">Add Books</p>"""),
Fieldset('',
CreateBooksFormset('books'))),
ButtonHolder(Submit('submit', 'Add Books')),
)
class CreateMultipleBooksForm(ModelForm):
class Meta:
fields = ['title', 'author']
# Formsets ################################################################
CreateBooksFormset = formset_factory(CreateMultipleBooksForm,
extra=2, min_num=1, max_num=20, can_delete=False)
如何呈现书籍形式,使每个字段都有指定的宽度?另外,如何添加JS以动态添加/删除列表中的图书?请记住,我想利用crispyforms来做到这一点。