【问题标题】:django multiple objects updatedjango 多个对象更新
【发布时间】:2015-10-29 23:30:20
【问题描述】:

我有一个模型,我想用相同的“子阶段”字段值更新多个对象字段“值”。目前我知道如何使用 UpdateView 更新一个对象字段“值”,但我不知道如何为具有相同“子阶段”编号的多个对象执行此操作。我应该使用表格吗?

class ZoneSubStage(models.Model):
    substage = models.ForeignKey(SubStage)
    value = models.PositiveSmallIntegerField(default=0)

这就是我现在所做的:

class ZoneSubStageUpdate(UpdateView):
    model = ZoneSubStage
    fields = ['value']
    template_name = 'autostages/zonesubstage_update.html'

zonesubstage_update.html

<form action="" method="post">{% csrf_token %}
    {{ form.as_p }}
    <input type="submit" value="Update" />
</form>

【问题讨论】:

标签: django forms object


【解决方案1】:

如果这是你的模型:

class ZoneSubStage(models.Model):
    substage = models.ForeignKey(SubStage)
    value = models.PositiveSmallIntegerField(default=0)

超级覆盖form_valid 方法以调用所有相关substage 对象的更新,如果要将它们都设置为相同的值,请使用substage_set。你可以使用 Django ORM update() 方法:

class ZoneSubStageUpdate(UpdateView):
    model = ZoneSubStage
    fields = ['value']
    template_name = 'autostages/zonesubstage_update.html'

    def form_valid(self, form):
        self.object.substage_set.update(myfield='new-value')
        return super(ZoneSubStageUpdate, self).form_valid(form)

【讨论】:

  • 我不想将它们全部设置为相同的值。我希望能够决定在一个表单中分别为它们中的每一个设置什么值。因此,想象一个显示这些值的页面,这样我就可以分别单击它们中的每一个,然后通过键入并更改值来更改值,并在为所有这些值按下一个按钮更新后进行更新。
  • @BlueTomato 那么你需要使用@ivan 提到的Django FormSet
猜你喜欢
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 2019-02-25
  • 2021-03-05
  • 1970-01-01
  • 2020-06-01
相关资源
最近更新 更多