настройка данных формы в представлениях - PullRequest
0 голосов
/ 01 февраля 2020

Я использую django -образную форму (https://pypi.org/project/django-shapeshifter/) с двумя формами, FormA и FormB - они объединены в одну форму. Это формы моделей, поэтому я использую MultiModelFormView из shapehifter.

views.py

class AddFormsView(LoginRequiredMixin, MultiSuccessMessageMixin, MultiModelFormView):
    form_classes = (zooForm, animalMetadataForm)
    template_name = 'zoos/add_zoo_shapeshift.html'
    success_url = '/'

    def forms_valid(self):
        forms = self.get_forms()
        raven_form = forms['ravenmetadataform']
        recording_form = forms['recordingform']
        if recording_form:
            recording_form.data['created_by'] = self.request.user
        return super(AddFormsView, self).forms_valid()

Если я пытаюсь установить данные в методе forms_valid, меня предупреждают что This QueryDict instance is immutable

При использовании обычных форм моделей (то есть без смещения формы) я предварительно установил значения форм в методе form_valid, например:

def form_valid(self, form):
    context = self.get_context_data()
    animal_data = context['animal_data']
    with transaction.atomic():
        form.instance.created_by = self.request.user

Я думаю, эквивалент не т поддерживается

...