Как отправить форму, содержащую данные, которые предварительно заполняются, и размещенные данные

У меня есть форма, которая имеет 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())

^ Я автоматически размещаю эти отпечатки при создании формы, а затем удаляю их, когда знаю, что все работает правильно

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