Как динамически обновлять измененные поля модели

Допустим, у меня есть модель Project. Модель Project имеет > 100 полей.

Я могу создавать новые Projects из front-end с помощью форм.

Когда я хочу отредактировать/обновить некоторое поле Project в back-end, я делаю что-то вроде этого (усечено):

def edit_project(request):
    if request.method == 'POST':
        project_to_edit = Project.objects.get(pk=request.POST['project_id'])
        project_to_edit.description = request.POST['description']
        project_to_edit.name = request.POST['name']
        #repeat the same process for each field...(>50)
        project_to_edit.save()
        return redirect('project_page/')
    return redirect('index')

Проблема в том, что в модель Projects постоянно добавляются новые поля.

Существует ли динамический/питонический способ обновления каждого поля в модели без необходимости делать это "вручную" для каждого поля и экономить строки кода?

Я думаю, что это правильный путь.

Вы можете динамически обновлять поля следующим образом:

def edit_project(request):
    if request.method == 'POST':
        project_to_edit = Project.objects.get(pk=request.POST['project_id'])
        for field in self.fields:
            project_to_edit.description = request.POST[field]
            project_to_edit.name = request.POST[field]
            #repeat the same process for each field...(>50)
            project_to_edit.save()
        return redirect('project_page/')
    return redirect('index')

P.S. Вы должны использовать form.clean_data для доступа к данным формы, а не непосредственно к отправленным данным. Modelform решит ваши проблемы https://docs.djangoproject.com/en/4.0/topics/forms/modelforms/

Вернуться на верх