@NyxDeveloper

Присвоение значения полю формы Django во view?

Есть страница с таблицей, в которой находятся объекты базы данных. Я хочу сделать так, чтобы при клике на запись в этой таблице открывалось новое окно с формой редактирования этого объекта бд. Все настроил кроме отображения уже имеющихся полей формы. Дело в том, что форма отображается пустой, а в ней (по логике) должны быть уже заполненные поля, чтобы видеть что редактируешь. Подскажите как лучше передать значение из объекта в поле формы. Пробовал создавать форму во view и передавать ей объект как instance, но почему-то подтягиваются только текстовые поля.

views.py
@login_required
def EditProjectView(request):
    obj = Project.objects.get(id=request.GET.get('objId'))
    form = EditProjectForm(instance=obj, objId=obj.id)

    return render(request, 'editProject.html', {
        'form': form
    })


forms.py
class EditProjectForm(forms.ModelForm):
    class Meta:
        model = Project
        fields = [
            'name',
            'number',
            'idKontr',
            'idTip',
            'idStatus',
            'idKv',
            'description'
        ]

        widgets = {
            'idKontr': forms.Select(attrs={
                'class': 'form-control'
            }),
            'idTip': forms.Select(attrs={
                'class': 'form-control'
            }),
            'idStatus': forms.Select(attrs={
                'class': 'form-control'
            }),
            'idKv': forms.Select(attrs={
                'class': 'form-control'
            }),
        }

    objId = forms.IntegerField()

    def __init__(self, *args, **kwargs):
        super(EditProjectForm, self).__init__(*args, **kwargs)

        self.fields['objId'].widget = forms.NumberInput(attrs={'class': 'd-none', 'id': 'edit_id_field'})

        self.fields['name'].widget = forms.TextInput(attrs={'class': 'form-control'})
        self.fields['description'].widget = forms.Textarea(attrs={'class': 'form-control'})

        self.fields['name'].required = False
        self.fields['number'].required = False
        self.fields['idKontr'].required = False
        self.fields['idTip'].required = False
        self.fields['idStatus'].required = False
        self.fields['idKv'].required = False
        self.fields['description'].required = False
  • Вопрос задан
  • 20 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы