2015-10-29 6 views
1

У меня есть модель Я хочу обновить поле «значение» нескольких объектов с тем же значением поля «подъязыка». На данный момент я знаю, как обновлять одно значение поля «значение» с помощью UpdateView, но я не знаю, как это сделать для нескольких объектов, имеющих тот же номер подъязыка. Должен ли я использовать форму?обновление нескольких объектов django

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> 
+0

Что вы после является [ 'FormSet'] (https://docs.djangoproject.com/en/1.8/topics/forms/formsets/). – Ivan

ответ

0

Если это ваша модель:

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

Супер переопределить form_valid метод вызова u pdate для всех связанных объектов 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) 
+0

Я не хочу, чтобы все они были одинаковыми. Я хочу иметь возможность решить, какое значение установить для каждого из них отдельно в одной форме. Итак, представьте одну страницу с указанными значениями, чтобы я мог щелкнуть по каждому из них отдельно и изменить значение, введя его и обновив, как только одно нажатие кнопки будет нажата для всех из них. – BlueTomato

+0

@BlueTomato, тогда вам нужно использовать 'Django FormSet', как указано в @ivan. –

Смежные вопросы