Django: Обновление и создание записи данных с помощью inlineformset_factory
Может кто-нибудь помочь мне, я пытаюсь использовать "inlineformset_factory" я действительно сделал его работающим, но вместо обновления записи он просто дублирует запись
вот мой view.py
def resume(request):
user = request.user.personaldetails
form1 = personalDetailsForm(instance=user)
workExpFormSet = inlineformset_factory(
personalDetails, employmentHistory, form=employmentHistoryForm, extra=3, max_num=3)
formset = workExpFormSet(instance=user)
if request.method == 'POST':
form1 = personalDetailsForm(request.POST, request.FILES, instance=user)
formset = workExpFormSet(request.POST, instance=user)
if form1.is_valid():
form1.save()
if formset.is_valid():
formset.save()
else:
print(formset.errors)
# print(formset)
return render(request, 'main/Client/resume.html', {'form1': form1, 'formset': formset})
Мой models.py
и, наконец, моя форма для настройки моей модели
class employmentHistoryForm(ModelForm):
JobTitle = forms.CharField(label="", required=False, widget=forms.TextInput(
attrs={'type': 'text', 'class': 'form-control jobTitle', 'name': 'jobTitle'}))
start_date = forms.CharField(label="", required=False, widget=forms.TextInput(
attrs={'type': 'text', 'class': 'form-control startDate', 'name': 'start_date'}))
end_date = forms.CharField(label="", required=False, widget=forms.TextInput(
attrs={'type': 'text', 'class': 'form-control endDate', 'name': 'end_date'}))
employer = forms.CharField(label="", required=False, widget=forms.TextInput(
attrs={'type': 'text', 'class': 'form-control employerName', 'name': 'employer'}))
city = forms.CharField(label="", required=False, widget=forms.TextInput(
attrs={'type': 'text', 'class': 'form-control employerCity', 'name': 'city'}))
description = forms.CharField(label="", required=False, widget=forms.Textarea(
attrs={'type': 'text', 'class': 'form-control employeeEditor', 'style': 'height: 100px;', 'name': 'description'}))
class Meta:
model = employmentHistory
fields = '__all__'
exclude = ['personal']
Когда я ввожу/сохраняю данные в форме, она создает запись и добавляет другую запись с теми же данными из предыдущей записи, просто умножая последние введенные данные... но всякий раз, когда я пытаюсь просто изменить последние данные, она выдает ошибку :
[{'id': ['Это поле обязательно']}, {'id': ['This field is required.']}, {'id': ['This field is required.']}]
Потому что вы не включили поле id в свои шаблоны, или, возможно, реализовали его неправильно (Поскольку вы не включили код своего шаблона, я предполагаю, что проблема в этом, что вполне вероятно). Поскольку Forms не нашел никакого id, связанного с данными поста, он предполагает, что это запрос Create, а не edit.