Чистый способ работать с Django UpdateView, не позволяя ему переопределяться и делать append к существующим данным?
У меня есть модель формы, которую я отображаю на фронтенде. Одно из полей представляет собой выпадающий список select2, пользователь выбирает вариант и добавляет соответствующие детали в другое поле, например
class MyForm(forms.ModelForm):
name = models.ModelChoiceField(queryset=Test.objects.all(),required=False)
data = models.CharField(required = False)
.....
Теперь url, отвечающий за обработку POST, выглядит следующим образом
/example/<str:name/
Вот моя проблема, у меня уже есть существующее значение данных в БД для определенного name
. Я хочу, чтобы когда пользователь выбирает имя во фронтенде и добавляет некоторое значение в данные, эти данные добавлялись к существующему значению в БД для этого имени.
Я наследую от UpdateView и поэтому, когда я делаю что-то вроде этого, оно просто переопределяет существующие данные.
def form_valid(self,form):
obj = form.save(commit=False)
#here is where I would like to do something with the existing data for that instance
obj.save()
Один из подходов, который был у меня в голове, на самом деле делает что-то вроде этого в форме save()
#modelform save()
def save(self,commit=True):
#do a fetch from the db about the existing data
obj = MyModel.objects.get(id=instance.id)
self.data = obj.append_data(obj.data,self.data) #can be a model method
return super().save(commit)
Является ли это чистым подходом? Я хочу сделать это более чистым способом без всяких хаков