Моя модель:
Мое "событие" ссылается на несколько "элементов" в следующем объявлении:
items = models.ManyToManyField('Item')
Моя форма:
Есть много элементов, которые я перечисляю в виджете множественного выбора начальной загрузки.Чтобы сэкономить время, я добавил в форму флажок, который также добавит потомков выбранных «элементов» в мое «событие».
addToChildren = forms.BooleanField(required=False, label="Add event to descendants of selected item")
Мое представление:
После того как форма отправлена, я добавляю потомков со следующим кодом:
class EventUpdate(UpdateView):
#declared model, formclass and success url, but left it off for the question
def form_valid(self, form):
event = form.save()
if form.cleaned_data['addToChildren'] == True: #add to children if told to do so.
print("items before save")
print(self.object.items.all())
for x in range(0,form.cleaned_data['items'].count()):
itm = form.cleaned_data['items'][x]
for descendant in itm.get_descendants():
self.object.items.add(descendant)#deletes when updated
print("items after save")
print(self.object.items.all())
return super(EventUpdate, self).form_valid(form)
Моя проблема:
Печатные операторы ясно показывают, чтопотомки выбранных элементов в добавляются в self.object (мой объект события).
Проблема в том, что оператор return игнорирует мои изменения, добавляет выбранные элементы в мое событие и удаляет все невыбранные элементы из моегособытие.Я бы хотел, чтобы это прекратилось.
Есть ли способ добавить информацию в form.cleaned_data из представления django?