内联表单集仅保存最后一个表单

2023-12-11

我尝试了很多方法并进行了很多搜索(谷歌搜索),但没有人为我工作。每当我保存内联表单集时,它只保存最后一个表单, 我的模型.py

class Book(models.Model):
   book = models.CharField(max_length=20,unique=True)
   author = models.ForeignKey(Author,on_delete=models.CASCADE)

class Author(models.Model):
   author = models.CharField(max_length=30,unique=True)
   count = models.IntegerField()

这是我的forms.py

class AuthorForm(ModelForm):
    class Meta:
        model = Author
        fields = ['author','count']
class BookForm(ModelForm):
    class Meta:
        model = Book
        fields = ['book']
InlineFormset_Author = inlineformset_factory(Author,Book,form=BookForm,extra=1)

这是我的观点

class CreateBookView(LoginRequiredMixin,SuccessMessageMixin,CreateView):
model = Author
form_class = AuthorForm
def get_context_data(self,*args,**kwargs):
    context = super(CreateBookView,self).get_context_data(*args,**kwargs)
    if self.request.POST:
        context['book'] = InlineFormset_Author(self.request.POST)
    context['book'] = InlineFormset_Author()
    return context
def form_valid(self,form):
    context = self.get_context_data()
    context = context['book']
    with transaction.atomic():
        self.object = form.save()
        if context.is_valid():
            context.instance = self.object
            context.save()
    return super(CreateBookView,self).form_valid(form)

这是我的模板

<form method="POST">{% csrf_token %}
    {{book.management_form}}
    {{form.author | add_class:'form-control col-12 col-sm-10 mx-auto'}}
    {{form.count | add_class:'form-control col-12 col-sm-10 mx-auto' | attr:'id:count'}}
    <button class="col-4 mx-auto  shadow-lg border-right border-left">insert</button>
    <div id="BOOK" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="my-modal-title" aria-hidden="true">

  <div class="modal-dialog" role="document"><div class="modal-content"><div class="modal-header">
  <h5 class="modal-title" id="my-modal-title">BOOK</h5>
  <p class="close" data-dismiss="modal" aria-label="Close">
 <div class="modal-body">
 <button type="submit" class="btn btn-success">save</button></dic>
 </div>
 <div class='modal-footer'></form>
<script>
$(document).ready(function(){
$('#BOOKBTN').on('click',function () {
let allValue=[];
let numberOfInput=$('#count').val();
let allContent='';
let justforName=0;
let numOfContent=$('.modal-body input').length;
for(let j=0;j<numOfContent;j++){
justforName=j+1;

allValue.push($('input[name="BOOK'+justforName+'"').val());

}
if(numOfContent!=numberOfInput){
for(let i=0;i<numberOfInput;i++){
justforName=i+1;
{% for i in book.forms %}
  allContent+='{{i.book}}';
  {% endfor %}
}
$('.modal-body').html(allContent);
}
for(let j=0;j<allValue.length;j++){
justforName=j+1;

$('input[name="BOOK'+justforName+'"').val(allValue[j])
}})})
</script>

我使用小部件调整来为我的输入字段提供类和 id 我是不是错过了什么?或者我也许做错了什么?! 我已准备好付款以使其正常运行 感谢您的任何建议


我已经有好几年没有在 Django 上做过任何工作了,但我会尝试注释你的代码并添加我的想法。

def form_valid(self,form):
    context = self.get_context_data() # This line looks fine
    context = context['book'] # You are overwriting your context here, call this 
    with transaction.atomic():
        self.object = form.save() # Your have a save here and one further down, this is also setting self object which may be incorrect.
        if context.is_valid():
            context.instance = self.object
            context.save()
    return super(CreateBookView,self).form_valid(form)

就像我说的,我已经好几年没有做过任何 Django 了,所以我只是参考我的一些旧代码(可能已经过时了)https://github.com/timhughes/django-cbv-inline-formset/blob/master/music/views.py#L26我将用注释对其进行注释。

def form_valid(self, form):
    context = self.get_context_data(form=form)  # Get the context data for the form in question.
    formset = context['track_formset']  # Extract the formset out of the context.
    if formset.is_valid():  # Validate the formset is valid
        response = super().form_valid(form)  # Call the parent class's form_valid.
        formset.instance = self.object  # Set the formsets type (instance of self.object) so that django knows how to save it.
        formset.save()  # Save the formset here
        return response  # Send a response to the user
    else:
        return super().form_invalid(form) # Send a response to the user with invalid form information.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

内联表单集仅保存最后一个表单 的相关文章

  • “unicode”对象没有属性“_meta”

    我正在尝试创建一个视图 用户在其中从下拉菜单中选择一个选项 提交它 然后返回一些数据 具体来说 他们将从数据库中的模型中进行选择 并返回该类的所有实例 我使用 django tables2 输出数据 以便可以排序 但这是我的症结所在 Vie
  • Django / PIL - 上传图像时保存缩略图版本

    这是我的 forms py class UploadImageForm forms ModelForm class Meta model UserImages fields photo 这是我的 models py class UserIm
  • 如何确定 Django 中用户何时出现空闲超时?

    我想审核用户在我的 Django 应用程序中遇到空闲超时的情况 换句话说 如果用户的会话 cookie 的过期日期超过了 settings py 中找到的 SESSION COOKIE AGE 用户将被重定向到登录页面 当这种情况发生时 也
  • Django 星级评定系统和 AJAX

    我正在尝试在 Django 网站上实现星级评级系统 在我的模型中存储评级是排序的 就像在页面上显示分数一样 但我希望用户能够对页面进行评分 基本上从 1 到 5 而无需刷新或更改页面 我发现了以下内容 并且喜欢这里明星的风格 http jv
  • Django + WSGI:刷新问题?

    我正在开发一个 Django 网站 我在实时服务器上进行所有更改 只是因为这样更容易 问题是 它似乎时不时地喜欢缓存我正在处理的 py 文件之一 有时 如果我频繁点击刷新 它会在页面的旧版本和新版本之间来回切换 我的设置或多或少类似于 Dj
  • 自定义 django-rest-framework-simplejwt 的 JWT 响应

    我正在设置 Django 来发送 JWT 响应而不是视图 我尝试使用 django rest framework simplejwt 这个框架中提供了一个函数TokenObtainPairView as view 返回一对 jwt 我需要使
  • Django/Python:电子邮件回复已更新到站点[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Django GraphQL JWT:tokenAuth 突变返回“str 对象没有属性解码”

    目前 我正在文档页面中运行 django graphqljwt 的基本示例 https django graphql jwt domake io en latest quickstart html https django graphql
  • 如何为 bcrypt.hashpw 设置盐?

    salt yhnqazolr123098765 password bcrypt hashpw password salt repeatpassword bcrypt hashpw repeatpassword salt 我在第二行遇到错误
  • 无法使用 Django 应用程序从容器连接到 MySQL docker 容器

    当我尝试从运行 Django 应用程序的 docker 容器连接到运行 MySQL 的容器时 出现以下错误 django db utils OperationalError 2003 Can t connect to MySQL serve
  • 在 MacOSX10.6 上运行 python 服务器时 MySQLdb 错误

    运行我的服务器 python manage py runserver 产生以下错误 django core exceptions ImproperlyConfigured 加载 MySQLdb 模块时出错 没有名为 MySQLdb 的模块
  • 数据库错误:值对于类型字符变化来说太长(100)

    我有一个 Django 网站 运行我们几年前在内部构建的迷你 CMS 它使用 postgresql 保存简单的标题和一段文本时 出现以下错误 value too long for type character varying 100 奇怪的
  • Django:管理中的 AJAX ManyToManyField

    我要显示ManyToManyFields 在 admin 中就像filter horizontal确实如此 但会在用户在过滤器字段中键入内容时填充选项 有很多选项 一次性加载它们需要很多时间 I found django ajax 过滤字段
  • 如何发送正确的授权标头以进行基本身份验证

    我正在尝试从 API 发布数据 但无法通过基本身份验证 I try ajax type POST url http theappurl com api v1 method data crossDomain true beforeSend f
  • 在 django admin 中自定义选择

    我有一个模型 其中一个字段是外键 所以我在 django admin 中看到选择 是否可以自定义此选择的标签 class Model models Model name models CharField def unicode self r
  • Django 响应总是用 text/html 分块无法设置内容长度

    在我的Django应用程序的views py中 我在尝试设置以下HTTP标头字段后返回一个HttpResponse对象 Create a Response Object with the content to return response
  • Django 多个具有相同名称的输入字段值

    我需要一些帮助 如何处理具有多个输入字段值且名称相同的表单 而且只有一次查看 这实际上是针对基本问题的形式 我发现这个方法的另一个想法https stackoverflow com a 478406 6396981 https stacko
  • InterfaceError:连接已关闭(使用 django + celery + Scrapy)

    当我在 Celery 任务中使用 Scrapy 解析函数 有时可能需要 10 分钟 时 我得到了这个信息 我用 姜戈 1 6 5 django celery 3 1 16 芹菜 3 1 16 psycopg2 2 5 5 我也使用了psyc
  • 如何在 success_url 中传递上下文数据?

    我制作了一个表单 我希望再次返回相同的表单 这次使用可在我的模板中使用的上下文数据来显示表单已成功发送 我怎样才能做到这一点 class ContactUsView FormView form class ContactUsForm tem
  • ExpectedFailure 被计为错误而不是通过

    我在用着expectedFailure因为有一个我想记录的错误 我现在无法修复 但想将来再回来解决 我的理解expectedFailure是它会将测试计为通过 但在摘要中表示预期失败的数量为 x 类似于它如何处理跳过的 tets 但是 当我

随机推荐

  • 如何将异步调用包装为同步行为?

    目前 这就是我使用 node mysql 执行查询的方式 client query sql function error result console dir result 我想同步执行此操作 类似这样 var result client
  • C语言中如何将字符串输入到数组中?

    我试图从用户那里获取输入 字符串 并将它们存储在一个数组中 但是在我运行这段代码后 程序立即崩溃了 include
  • 在 C 中分配一维固定的二维数组

    我想动态分配 2D 数组的 1 个维度 给出了另一个维度 这是否有效 int NCOLS 20 nrows user input double arr NCOLS arr double malloc sizeof double nrows
  • 使用 php 输出原始 XML

    我想以类似的方式输出原始 xmlhttp www google com ig api weather Mountain View但使用PHP 我的网络服务器上有一个非常简单的 php 脚本 我在 Chrome firefox 中只能看到 s
  • TestNG @Listeners 排序问题

    我的 TestNG 测试类中有多个侦听器及其使用 Listeners注释来加载侦听器 我的听众相互依赖 所以我需要确保listener1之前正在执行listener2总是 我在定义侦听器数组时尝试给出顺序 但似乎并不一致 有时Listene
  • Hive查询语言中的主键和索引可以吗?

    我们正在尝试将 oracle 表迁移到 hive 并对其进行处理 目前oracle中的表有primary key foreign key and unique key限制 我们可以在 hive 中复制相同的内容吗 我们正在对如何实施进行一些
  • MVC项目的views文件夹中的Web.Config文件有什么作用

    我在部署应用程序时遇到一些问题 在排除故障时 我遇到了Web Config文件在Views文件夹 为了缩小问题来源的可能性 我试图找出该问题的目的Web Config文件 但找不到太多信息 所以基本上我的问题是 什么是Web config文
  • 关系型数据库设计多用户类型

    我有 4 种类型的用户 每种类型都有特定的数据 但他们也共享公共数据 例如username password 我的第一个想法是创建一个主要的users表与user type柱子 然后在查询用户数据时我可以先选择他们的user type然后根
  • OleDbConnection 处理速度非常慢(2s)

    我在 OleDbConnection 访问同一网络中 Windows 共享上的 mdb 文件时遇到问题 当它在使用部分的末端被处理时 需要2秒以上的时间 打开连接并执行查询或填充DataTable最多只需要50ms 这是我的代码 priva
  • Elasticsearch:排序整数降序

    当使用查询在elasticsearch 版本 1 1 2 中按整数字段排序时 query match all sort cubicCapacity order asc ignore unmapped true from 0 size 150
  • 如何将方法作为回调传递给另一个类?

    我有一个关于使用 tr1 function 回调的问题 我定义了以下内容 class SomeClass public typedef std tr1 function
  • 如何使用 Angular + Masonry 修复重叠的砖块?

    我在用着Passy 的 Angular Masonry 指令在我的应用程序中渲染平铺元素 与许多砖石示例不同 我的砖块不包含图像 仅包含通过自定义指令呈现的静态文本和布局内容 我的设置如下 div div class masonry bri
  • 从 Activity A->B->C 导航 - 如何在 onBackPressed() 中将数据从 C 传递到 A?

    From Activity A call Activity B 从 B 到 C 并在通话时Activity C 我打电话给完成Activity B 从堆栈历史记录中清除Activity B and in Activity B onBackP
  • Python 中的加密字符串

    我需要用Python 加密一个小字符串 是否可以使用密钥来加密字符串 有没有一种好方法可以仅使用 Python 库来做到这一点并达到合理的加密级别 你能告诉我该怎么做吗 我对密码学的了解非常基础 看一眼py bcrypt 也许它会满足您的需
  • 在 Android 中使用相同的 debug.keystore 更新另一台机器中的应用程序

    我已在我的设备中安装了我的应用程序 现在由于某些原因 我已将代码和 debug keystore 导出到另一台计算机 当我重建应用程序时 它说 由于应用程序签名不同 重新安装失败 实际上我想更新应用程序而不卸载 我怎样才能做到这一点 谢谢
  • SPARQL:返回指定或等效类满足的所有交集

    如果我将 ABC 类和 CDE 类定义为 A B C D E 类的交集 如下所示
  • 复制并粘贴到嵌入 javafx 应用程序中的 codemirror.js

    我正在使用 codemirror js 库在 Java FX 中创建简单的编辑器 我使用 javafx scene web WebView 组件在 javafx 中嵌入了 codemirror 编辑器 并使用以下 html js 代码
  • 为什么 attr() 仅应用最后一种样式? [复制]

    这个问题在这里已经有答案了 我想知道为什么 attr 仅应用最后一个样式属性我想详细了解原因是什么 p first paragraph p
  • 显示多个项目的 Windows 上下文菜单

    我有一个列出文件的应用程序 我允许用户右键单击文件 我的应用程序会显示所选文件的 Windows 上下文菜单 I use SHParseDisplayName获取文件名的 pidl 然后我绑定到父对象 IntPtr pidlLast Int
  • 内联表单集仅保存最后一个表单

    我尝试了很多方法并进行了很多搜索 谷歌搜索 但没有人为我工作 每当我保存内联表单集时 它只保存最后一个表单 我的模型 py class Book models Model book models CharField max length 2