[Django] [ModelForm] Объекты из ModelForm правильно сохраняются в отладчике, но в обычном режиме некоторые поля не сохраняются - PullRequest
0 голосов
/ 19 апреля 2020

Я сдаюсь медленно, пожалуйста, помогите!

У меня есть трехступенчатая форма для создания двух объектов Pet и LostPet.

  • Step1:

Поле 1 - имя питомца. Поле 2 - тип питомца.

Поле 3 - имя потерянного_пользователя. Поле 4 - потерянное имя_этапа и т. Д. c.

  • Шаг 2:

дополнительная информация о Pet Field1 - Pet.chip_number Field2 - Pet.color

  • Step3: страница благодарности

На шаге 1 я просто отображаю форму, На Шаге 2 я создаю объект Pet только с именем, типом и сохраняю его:

if request.method == 'POST':
        form = LostPetSteModel1a(request.POST, instance=pet)
        if form.is_valid():
            pet.save()

Я также создаю объект LostPet, связанный с новым Pet:

lostpet_form = LostPetStepModel1b(request.POST, request.FILES, instance=lostpet)
lostpet.pet = pet
lostpet.save()

На последнем шаге Я извлекаю объект Pet из БД и обновляю его дополнительными полями из form2:

pet = Pet()
pet_form = AnimalLostPetStep2(request.POST, instance=pet)
pet_db = get_object_or_404(Pet, id=request.session['pet'])

pet.animal_id = pet_db.animal_id
pet.pk = pet_db.pk
pet.name = pet_db.name
pet.save()

В сеансе отладчика все работает нормально. В обычном режиме runserver у меня не сохранено несколько полей. В основном это адрес электронной почты из модели LostPet и все дополнительные поля из шага 2. Как я уже говорил, когда я отлаживаю шаг за шагом, все работает нормально. Все поля правильно заполнены и сохранены в базе данных. Знаете ли вы, каково решение этой проблемы? Если вы понимаете, чего я хочу достичь, возможно, у вас есть лучший способ сохранить два отдельных объекта в двухступенчатых формах. Этот подход выше - лучшее, что я мог придумать самостоятельно. Спасибо!

С уважением, Адам

...