Django formset等价于角度.js

2024-04-25 03:48:51 发布

您现在位置:Python中文网/ 问答频道 /正文

Django有formsets,其中可以在一个大表单中使用多个表单。因此,假设可以使用相同的图书形式重复添加多个图书(提供作者和书名)。在

如何实现相同的功能角度.js以及Django Rest框架?我是新手角度.js以及Django Rest框架,需要一些指导,如何能够在一个大的表单(例如,我的库)中为一个给定的模型动态添加更多的表单(例如,对于一本书),并将它们保存在Django后端。在


Tags: django模型功能框架rest表单js作者
1条回答
网友
1楼 · 发布于 2024-04-25 03:48:51

您可以通过两个步骤实现:

在前端

在您的页面上创建一个<form>,它将根据需要对用户输入的数据进行结构化。在<form>元素中,需要使用ngForm来验证多个表单的正确行为(herengForm如何工作的一个很好的解释)。假设的代码片段如下所示:

<form name="libraryForm">
  <div ng-repeat="book in vm.newBooksToAdd">

    <!  ngForm directive allows to create forms within the parent form  >
    <ng-form name="bookForm">
      <div>
        <label>Book title</label>
        <input ng-model="book.title" type="text" name="title" required>
      </div>
      <div>
        <label>Author</label>
        <input ng-model="book.author" type="text" name="author" required>
      </div>
    </ng-form>
  </div>
</form>

在您的控制器中,您可以初始化要添加为vm.newBooksToAdd = [];的图书列表,并且只要vm.newBooksToAdd.push({})一个空对象就可以添加新表单。因此,您将向后端发送一个表示要创建的书籍的对象数组。在

在后端

现在您需要重写视图的.create()方法,以允许一次创建多个实例,因为默认情况下它只需要一个对象。您的视图可能如下所示:

^{pr2}$

注意:如果您希望同时允许单个实例的批量创建,您需要调整您的.create()方法来检查request.data的数据类型。在

注意2:后端有一个^{}库可以实现您想要的功能,但是我没有尝试过,所以不能说它有什么坏处或好的地方。在

祝你好运!在

相关问题 更多 >