基于类的通用 UpdateView 内联

2024-04-23

我有以下型号

class Cv(models.Model):
    name = models.CharField(_('name'), max_length=250)
    objective = models.CharField(_('objective'), max_length=250)
    slug = models.SlugField(editable=False)

class Position(models.Model):
    cv = models.ForeignKey(Cv, verbose_name=_('cv'))
    start = models.DateField(_('start'))
    end = models.DateField(_('end'))
    name = models.CharField(_('name'), max_length=250)
    currently_employed = models.BooleanField(_('currently employed'))
    sector = models.IntegerField(_('sector'), choices=SECTOR_CHOICES)
    duties = models.TextField(_('duties'))

以及以下形式:

class CvForm(ModelForm):
    class Meta:
        model = Cv

class PositionForm(ModelForm):
    class Meta:
        model = Position
        widgets = {
            'start': DateInput(attrs={'class':'datepicker'}),
            'end': DateInput(attrs={'class':'datepicker'}),
        }

PositionFormSet = inlineformset_factory(Cv, Position, form=PositionForm, extra=1)

我创建了以下通用 CreateView,效果很好:

class CreateCvView(CreateView):
    model = Cv
    form_class = CvForm
    template_name = 'recruitment/cv/cv_detail.html'

    def get_success_url(self):
        self.success_url = '/'
        return self.success_url

    def get_context_data(self, **kwargs):
        context = super(CreateCvView, self).get_context_data(**kwargs)
        if self.request.POST:
            context['position_form'] = PositionFormSet(self.request.POST)
        else:
            context['position_form'] = PositionFormSet(instance=self.object)
        return context

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.slug = slugify(self.request.user)
        context = self.get_context_data()
        position_form = context['position_form']
        if position_form.is_valid():
            self.object = form.save()
            position_form.instance = self.object
            position_form.save()
            return HttpResponseRedirect(self.get_success_url())
        else:
            return self.render_to_response(self.get_context_data(form=form))

我想做的是一个 UpdateView,所以我复制了 createview 并将其传递给它,如下所示:

class EditCvView(UpdateView):
    model = Cv
    form_class = CvForm
    template_name = 'recruitment/cv/cv_detail.html'

    def get_success_url(self):
        self.success_url = '/'
        return self.success_url

    def get_context_data(self, **kwargs):
        context = super(EditCvView, self).get_context_data(**kwargs)
        if self.request.POST:
            context['position_form'] = PositionFormSet(self.request.POST)
        else:
            context['position_form'] = PositionFormSet(instance=self.object)
        return context

    def form_valid(self, form):
        self.object = form.save(commit=False)
        self.object.slug = slugify(self.request.user)
        context = self.get_context_data()
        position_form = context['position_form']
        if position_form.is_valid():
            self.object = form.save()
            position_form.instance = self.object
            position_form.save()
            return HttpResponseRedirect(self.get_success_url())
        else:
            return self.render_to_response(self.get_context_data(form=form))

它加载正常,但是当我发布表单时,我在 get_context_data 中的 PositionFormSet(self.request.POST) 上收到“列表索引超出范围”错误。有没有其他人有这个问题?


在 EditCvView 中:

context['position_form'] = PositionFormSet(self.request.POST, instance=self.object)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于类的通用 UpdateView 内联 的相关文章

随机推荐

  • 使用 CSV Django 模块以通用换行模式打开文件

    我正在尝试访问model filefield在 Django 中解析CSV http en wikipedia org wiki Comma separated values在 Python 中使用文件csv模块 它可以在 Windows
  • 在非托管主机下的托管组件中获取一部分空闲处理

    我有一个用 C 编写的托管组件 它由旧版 Win32 应用程序作为 ActiveX 控件托管 在我的组件内部 我需要能够获得通常情况下的内容Application Idle http msdn microsoft com en us lib
  • 使用 doctest 并登录 python 程序

    usr bin python2 4 import logging import sys import doctest def foo x gt gt gt foo 0 0 print d x logger debug d x def tes
  • JavaScript 中的文本压缩

    有没有图书馆 等等 在 JavaScript 中实现轻量级文本压缩 我真正的目标是稍微缩短一些文本并使其一目了然 它不需要提供安全性 文本将为用户显示 理想情况下 可以调整压缩以仅输出查询字符 a zA Z0 9 所以它可以在 URL 中传
  • 仅针对使用通道而定制的 Phoenix 应用程序如何在多台机器上扩展?使用HAProxy?如何向所有节点广播消息?

    我将节点应用程序纯粹用于带有 Redis PubSub 的 socket io 通道 目前我将其分布在 3 台机器上 并由其中一台机器上的 nginx 负载平衡提供支持 我想用 Phoenix 应用程序替换这个节点应用程序 而且我对 erl
  • 尝试测试字符串是否为整数时脚本崩溃

    我正在为 twitch 机器人制作一个 python 脚本 它基本上充当老虎机 免责声明 我对Python完全陌生 所以请不要杀我 在脚本的开头 我使用此代码来检查是否键入了正确的命令 检查第一个参数是否为整数 并检查用户是否有足够的积分
  • 依赖注入与托管依赖关系与全局对象

    我正在 Javascript BackboneJS 一个 MVC 框架 RequireJS 框架中工作 但这个问题有点 OO 通用 首先让我解释一下 在 Backbone 中 您的视图是传统视图和控制器的混合 而您的 HTML 模板是传统的
  • Python 面向对象编程:组合

    我一直在学习如何在 python 编程中实现组合 但我很难理解为什么它比继承更受欢迎 例如 到目前为止 这是我的代码 class Particle Constructor public def init self name charge r
  • 如何从 Java 8 中的迭代器获取第 n 个值?

    我整理了一个HashMap using 按值对 Map 进行排序 Java https stackoverflow com questions 109383 sort a mapkey value by values java对此我有一个L
  • Yii2 - 使用联结表插入关系数据,多对多连接

    我在使用 Yii2 稳定版 时遇到问题 我有一个 Content PK id 表 一个 Tag PK id 表和一个名为 Content Tag PK content id tag id 的联结表 我想用它来标记 例如 WP 标记 所有控制
  • 从 Guzzle 捕获 cURL 错误

    我有以下代码发出 Guzzle 4 1 请求 client new GuzzleHttp Client defaults headers User Agent gt userAgentString retry 0 do try return
  • 另一个日期时间问题

    我目前有一个这种格式的日期 2010 03 03 10 39 18 这是一个TIMESTAMPMySQL 中的字段 我需要为名为 Solr 的搜索引擎提供以下格式的日期 1995 12 31T23 59 59Z 以下是他们网站上有关日期的一
  • 服务资产发展非常缓慢

    我有一个带有默认资产管道的标准 Rails 3 Web 应用程序 突然之间 资源需要很长时间才能加载 我的页面加载时间从约 1 2 秒到约 1 分钟 服务器响应时间 home 正常 但某些 css 和 js 文件等待时间很长 长达 45 秒
  • Python Socket - 同时发送/接收消息

    基本上我一直在使用套接字和线程开发一个简单的聊天室 在我的客户端中 我可以接收和发送消息 我的问题是循环中一个消息先于另一个消息 所以如果我发送消息 我只会在发送消息后收到数据 我希望它像任何其他聊天室一样工作 当我发送消息时我可以收到消息
  • YouTubePlayerSupportFragment 不播放视频

    我有一个包含两个片段的 Activity 就像 YouTube 应用程序一样 YouTubePlayerSupportFragment 播放视频的半宽度 ListFragment 包含视频标题列表的列表 如 youtube 活动一启动 我就
  • 使用谷歌位置API在android中的onMapReady中获取当前位置

    我试图在我的应用程序内的谷歌地图上显示用户的当前位置 但我不想在用户移动时不断更新位置 应记录并显示他的初始位置 直到他关闭应用程序 我为此编写了以下代码 private GoogleMap mMap protected GoogleApi
  • WebApi 强制操作返回 xml

    我有这个动作 public IHttpActionResult SearchFor int aboItemType DTO FilterColumns filter Do stuff return Ok
  • 单页中可以有多个 html、head 和 body 元素吗

    我有多个页面被合并到一个页面中 其中一些单独的页面有自己的 html head 和 body 元素 拥有这些会对页面的性能产生不利影响吗 FireBug 中的 DOM 似乎是正确的 每个元素只有一个 第一 不要这样做 浏览器是very如果涉
  • 闪亮的 R 操作按钮控制反应元素

    不确定我是否应该使用这个术语 基本上 我有一个反应函数 可以显示用户上传的 CSV 文件 我想使用action button触发情节生成过程 此时此刻 情节总是即时生成的 所以我想知道 在renderPlot函数 如何让action but
  • 基于类的通用 UpdateView 内联

    我有以下型号 class Cv models Model name models CharField name max length 250 objective models CharField objective max length 2