Мне не понятно, почему вы хотите это сделать.Я не уверен, что экономия эффективности, связанная только с отправкой измененных полей, оправдывает повышенную сложность представления.
Однако, если вы действительно хотите это сделать, я бы попытался переопределить метод get_form_class
,и создание класса формы модели с использованием request.POST
для определения полей.
Следующее не проверено.
# in your question you are subclassing CreateView, but
# surely you want UpdateView if you are changing details.
class VideoCreate(UpdateView):
template_name = 'video_form.html'
model = Video
get_form_class(self):
"""
Only include posted fields in the form class
"""
model_field_names = self.model._meta.get_all_field_names()
# only include valid field names
form_field_names = [k for k in request.POST if k in model_field_names]
class VideoForm(modelForm):
class Meta:
model = Video
fields = form_field_names
return VideoForm
Предупреждение, этот подход будет иметь некоторые причуды и, возможно, потребуется еще немногоРабота.Если вы выполнили обычное POST без Ajax для одного поля в этом представлении, и форма была недействительной, я думаю, что все остальные поля исчезнут при визуализации шаблона.