即使成功创建对象后,django modelformset_factory 仍保留先前提交的数据

2023-12-02

我在我的观点之一中使用 django modelformset_factory 。我正在使用 javascript 将新表单添加到模板中的表单集。一切工作正常,但我的问题是,当我尝试使用 modelformset_factory 创建一个新对象时,它向我显示了我之前创建的所有对象作为表单。或者简单地说,当我使用 modelformset_factory 表单创建新实例时,它会显示最后提交的表单。就像我定义的那样extra = 0在初始化 modelformset_factory 和模板时,我向表单集中添加了 5 个表单并提交了这些表单。下次当我重新渲染用于为另一个用户创建日历的模板时,它会显示我之前为前一个用户提交的所有实例。意味着它将向我显示我为以前的用户提交的 5 个包含完整数据的表格。

我的模型、表单集、表单和视图如下。

class Calendar(models.Model):
    user = models.ForeignKey(User)
    name = models.CharField(max_length=200, null=True, blank=True)
    date = models.DateField(verbose_name=_('Date'))

    def __unicode__(self):
        return self.name

class UserCalendar(forms.ModelForm):
    date =forms.DateField(input_formats=['%d-%m-%Y', '%d-%m-%y'])
    class Meta:
        model = ProviderCalendar 
        exclude = ('user',)


class CalendarFormset(BaseModelFormSet):
    def __init__(self, *args, **kwargs):
        super(CalendarFormset, self).__init__(*args, **kwargs)
        for form in self.forms:
            form.empty_permitted = False

    def clean(self):
        return super(CalendarFormset, self).clean()

class CreateCalendar(LoginRequiredMixin,DetailView):
    model = Profile
    template_name = 'calendar_create.html'
    formset = modelformset_factory(Calendar,
      form=CalendarForm,
    formset=CalendarFormset,
    extra=0,
    )

def get(self, request, *args, **kwargs):
    self.object = self.get_object()
    context = super(CreateCalendar, self).get_context_data(**kwargs)
    context['formset'] = self.formset
    return self.render_to_response(context)

def post(self, request, *args, **kwargs):
    formset = self.formset(request.POST)
    self.object = self.get_object()
    if formset.is_valid():
        for form in formset.save(commit=False):
            form.user = self.get_object().user
            form.save()
        messages.success(request, _('Calendar created successfully'))
        return redirect("detail_profile")
    else:
        return self.render_to_response(self.get_context_data(formset=formset))

我的下一个问题是我想要 unique_together = (user, date)。我已从表单中排除了用户字段,因此唯一的表单验证将不起作用。有什么方法可以检查提交的表单集表单的唯一日期。


第一个问题的答案i.e modelformset_factory always sustains the old data就在这里。https://docs.djangoproject.com/en/1.8/topics/forms/modelforms/#chang-the-queryset正如文档中给出的那样,通过覆盖基本模型表单集的构造函数来更改查询集

from django.forms.models import BaseModelFormSet

从 myapp.models 导入作者

class CalendarFormset(BaseModelFormSet):
    def __init__(self, *args, **kwargs):
        super(CalendarFormset, self).__init__(*args, **kwargs)
        self.queryset = Calendar.objects.none()

就可以解决问题1。

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

即使成功创建对象后,django modelformset_factory 仍保留先前提交的数据 的相关文章

随机推荐

  • 如何使用路径列表创建层次结构?

    我正在使用 Dropbox 的 Delta API 当我调用 delta 方法时 我会得到自上次调用以来更改的路径列表 photos public photos sample album photos sample album boston
  • docker 容器中的 Firebase 身份验证模拟器 UI 无法在本地主机上运行

    我有这个泊坞窗文件 FROM node 16 ADD src WORKDIR src Install OpenJDK 11 RUN echo deb http ftp debian org debian stretch backports
  • 在进行 w.r.t. 评估时,是否应将数据批次移至 CPU 并(从 torch Tensor)转换为 numpy 数组?训练期间的指标?

    我正在经历Andrew Ng 在 CS230 斯坦福课程中的教程 并在训练的每个时期 通过计算指标来进行评估 但在计算指标之前 他们将批次发送到 CPU 并将其转换为 numpy 数组 代码在这里 extract data from tor
  • 如何将Hibernate和Solr集成在一起?

    对于使用 Hibernate 来管理对象持久性的人们来说 Hibernate 搜索是真正的救星 在尝试开发类似的功能 收集所有对象更改并在事务提交时将它们发送到全文搜索引擎 之后 您很快就会发现其中存在很多陷阱 另一方面 Solr 有其自身
  • 多个测试的单元测试设置/拆卸

    是否有在测试场景开始 结束时触发的函数 函数setUp和tearDown在每次测试之前 之后被触发 我通常想要这样的 class TestSequenceFunctions unittest TestCase def setUpScenar
  • 在 Visual Studio 设计器中公开枚举(标志)集合

    我有一个可能在 NET Forms 控件中显示的数据类型的枚举 我想为控件的使用者提供一个接口来过滤某些类型 设置一些标志 位字段似乎是执行此操作的逻辑方法 不幸的是 枚举从 0 而不是 1 0 1 2 4 8 开始 并且无法更改 如何公开
  • 未提供 Django Rest Framework 身份验证凭据

    我在用着django rest auth with django all auth关于 DRF 和 Angularjs 对于任何有关身份验证的请求 我收到以下错误 detail Authentication credentials were
  • 如何加快sheet中数据的搜索速度

    我有超过 1000000 条记录如何在工作表中加快搜索速度 我一般搜索20s如何提高 表格包括20列和10000条记录 var ss SpreadsheetApp openByUrl urldb var ws ss getSheetByNa
  • 带有微调器的可编辑文本视图 android

    我想在 android 中创建一个控件 用户可以通过键盘输入或通过下拉列表 微调器 输入 实际上 我在微调器的数组中硬编码的值并不详尽 因此用户也应该可以选择通过虚拟键盘输入 那么用户可以通过键盘输入或从列表中选择吗 我怎样才能在andro
  • 按命名空间转换对象

    我需要像这样转换 平面对象 输入数据 prop1 value 1 prop2 subprop1 value 2 1 prop2 subprop2 value 2 2 像这样的沉浸对象 输出数据 prop1 value 1 prop2 sub
  • Linux 上一个进程如何拦截另一个进程的 stdout 和 stderr?

    我有一些应该停止运行的脚本 但它们却永远存在 有什么方法可以让我以可读的方式弄清楚他们正在向 STDOUT 和 STDERR 写入什么内容 例如 我尝试这样做 tail f proc pid fd 1 但这并没有真正起作用 无论如何 这是一
  • 通过应用程序通过 HttpPost 登录网站

    你好 Stackoverflowers 我编写了一个相对简单的应用程序 由登录文本字段 密码文本字段和登录按钮组成 我的目标是 当用户输入登录信息并触摸登录按钮时 应用程序将使用户登录到我指定的网站 并以不同的意图或 WebView 打开它
  • 删除 SublimeText 中但匹配的所有文本

    我正在尝试删除 sublime 中除电子邮件之外的所有字符串 所以我可以寻找这样的电子邮件 a zA Z0 9 a zA Z0 9 a zA Z0 9 但我该如何删除其他所有内容呢 Thanks 您可以执行以下操作 Use your reg
  • 如何制作一个flex(词法扫描器)来读取UTF-8字符输入?

    看起来flex不支持UTF 8输入 每当扫描器遇到非 ASCII 字符时 它就会停止扫描 就像它是 EOF 一样 有没有办法强制 Flex 吃掉我的 UTF 8 字符 我不希望它实际匹配 UTF 8 字符 只需在使用 时吃掉它们即可图案 有
  • 浮动:右反转跨度的顺序

    我有 HTML div span class label a href index 1 Bookmix Offline a span span class button a href settings Settings a span spa
  • 仅使用 print 语句进行调试

    最近我用 Python 编写了很多代码 我一直在处理以前从未使用过的数据 使用以前从未见过的公式并处理巨大的文件 所有这些让我写了很多打印语句来验证一切是否正常并找出故障点 但是 一般来说 输出这么多信息并不是一个好的做法 如何仅在我想要调
  • 有人可以解释一下 Shell Shock Bash 代码吗? [复制]

    这个问题在这里已经有答案了 我在理解以下代码时遇到问题 该代码是 Shell Shock 的 漏洞证明 代码 有人可以向我解释一下吗 特别是这部分 env x echo vulnerable bash c echo this is a te
  • 如何让视图永远旋转?

    有没有办法让视图以指定的速度永远旋转 我需要它来作为指标之类的东西 我知道有一个奇怪的 Lxxxxx00ff 常量 记不太清了 代表 永远 您可以使用HUGE VAL对于浮动值 如果我没记错的话 动画的repeatCount属性是一个浮动值
  • 如何判断 ASP 中的页面卸载是否为回发

    这似乎是一个常见问题 但搜索没有返回任何内容 我在页面卸载之前执行以下代码 问题是 如果卸载是回发 我不想向用户发出警告 但我无法弄清楚如何区分回发和用户导航到例如另一页 This is executed before the page a
  • 即使成功创建对象后,django modelformset_factory 仍保留先前提交的数据

    我在我的观点之一中使用 django modelformset factory 我正在使用 javascript 将新表单添加到模板中的表单集 一切工作正常 但我的问题是 当我尝试使用 modelformset factory 创建一个新对