Как отправить форму, содержащую данные, которые предварительно заполняются, и размещенные данные
У меня есть форма, которая имеет 2 типа входов, предварительно заполненные и данные и данные, которые необходимо добавить во вход.
Я пытаюсь отправить форму, но ничего не получаю в базе данных. Я нашел несколько связанных ответов, но они старые и требуют, чтобы либо все данные были предварительно заполнены, либо все данные были добавлены, но в моей форме это смесь обоих вариантов.
Вот мнения:
def addlog(request, pk):
url = request.META.get('HTTP_REFERER')
if request.method == 'POST':
form = LogForm(request.POST)
if form.is_valid():
data = Log()
data.log_workout = form.cleaned_data['log_workout'] <------ prepopulated in template
data.log_repetitions = form.cleaned_data['log_repetitions']<------ not prepopulated in template
data.workout_id = Workout.pk
data.save()
return HttpResponseRedirect(url)
return HttpResponseRedirect(url)
Шаблон:
<form
class="review-form" action="{% url 'my_gym:addlog' workout.id %}" method="post">
{% csrf_token %}
<input hidden type="text" name="log_workout" value="{{ object.name }}" required id="id_log_workout">
<input name="log_repetitions" required id="id_log_repetitions">
</div>
<button type="submit">
</button>
</form>
Вы можете получить к ним доступ через объект запроса. request.POST.get('log_workout')
значение должно быть размещено, потому что оно находится внутри тега формы
.
Редактируйте: это только для дополнительных полей не в forms.py
Формат отладки общей формы (ссылка)
if request.method == 'POST':
print(request.POST)
form = FormToSave(request.POST)
if form.is_valid():
print('Valid!')
form.save()
else:
print(form.errors)
# or
print(form.errors.as_data())
^ Я автоматически размещаю эти отпечатки при создании формы, а затем удаляю их, когда знаю, что все работает правильно