I would assume you want something akin to the first example here:

https://docs.djangoproject.com/en/dev/topics/forms/modelforms/

Once you have the form object built with the instance of your Answer
object, just pass it along.

Since I've never needed more than one form on a page, there may be other
gotchas, but you should be able to Google for those. I don't believe that
you'll need to do anything special though. Keep in mind that only one of
the forms will be submitted (assuming each has it's own set of <form>
tags). If you need to combine them and submit info for both, you may need
to roll a single custom form class that can handle all of the data, or
possibly look into Django formsets.

-James


On Monday, September 1, 2014, Brad Rice <[email protected]> wrote:

> Here is my entire view class to go with a ModelForm. How do I get the
> various forms as context into my template?
>
> class ApplicationVerify(UpdateView):
>     model = Answers
>     form_class = ApplicationCheckForm
>     template_name = 'requestform/application_detail.html'
>
>     @method_decorator(login_required(login_url='/accounts/login/'))
>     def dispatch(self, *args, **kwargs):
>         return super(ApplicationVerify, self).dispatch(*args, **kwargs)
>
>     def get_object(self, queryset=None):
>         return Answers.objects.get(created_by=self.request.user)
>
>     def form_valid(self, form):
>         obj = form.save(commit=False)
>         obj.created_by = self.request.user
>         obj.save()
>         a = Application.objects.get(created_by=self.request.user)
>         b = Answers.objects.get(created_by=self.request.user)
>         c = Applicant.objects.get(created_by=self.request.user)
>         return HttpResponseRedirect(reverse('requestform:app_complete',
> kwargs={'app_id': a.id}))
>
>
>     def get_context_data(self, **kwargs):
>         context = super(ApplicationVerify, self).get_context_data(**kwargs)
>         context['app'] = Application.objects.get(id=self.kwargs['app_id'])
>         context['answers'] =
> Answers.objects.get(created_by=self.request.user)
>         context['applicant'] =
> Applicant.objects.get(created_by=self.request.user)
>         return context
>
> On Monday, September 1, 2014 4:15:39 PM UTC-4, James Schneider wrote:
>>
>> It looks like you are passing the context an actual Answers object, not a
>> Form or ModelForm object that will add/update an Answers object, hence
>> the reason the trace back complains about a lack of 'fields'.
>>
>> -James
>>
>> On Monday, September 1, 2014, Brad Rice <[email protected]> wrote:
>>
>>> This document seems to indicate I can have two forms inside one set of
>>> form tags:
>>>
>>> http://django-crispy-forms.readthedocs.org/en/latest/
>>> crispy_tag_forms.html#rendering-several-forms-with-helpers
>>>
>>> I cannot figure out how to set the context to be able to iterate over
>>> both forms.
>>>
>>> {% crispy form %}
>>>
>>> works on my model form.
>>>
>>> If I try to set context in my view like this:
>>>
>>> def get_context_data(self, **kwargs):
>>>         context = super(ApplicationVerify, self).get_context_data(**
>>> kwargs)
>>>         context['app'] = Application.objects.get(id=
>>> self.kwargs['app_id'])
>>>         context['answers'] = Answers.objects.get(created_
>>> by=self.request.user)
>>>         context['applicant'] = Applicant.objects.get(created_
>>> by=self.request.user)
>>>         return context
>>>
>>> and then use instead of crispy form
>>>
>>> {% crispy answers %}
>>>
>>> I get errors.
>>>
>>> 'Answers' object has no attribute 'fields'
>>>
>>> How do I set a form to have context from several models?
>>>
>>> I do see the context is coming into the template, it just is not
>>> treating them as having form widgets.
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Django users" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to [email protected].
>>> To post to this group, send email to [email protected].
>>> Visit this group at http://groups.google.com/group/django-users.
>>> To view this discussion on the web visit https://groups.google.com/d/
>>> msgid/django-users/9845f147-8c82-49fd-b15a-62e79680caa2%
>>> 40googlegroups.com
>>> <https://groups.google.com/d/msgid/django-users/9845f147-8c82-49fd-b15a-62e79680caa2%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>  --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected]
> <javascript:_e(%7B%7D,'cvml','django-users%[email protected]');>
> .
> To post to this group, send email to [email protected]
> <javascript:_e(%7B%7D,'cvml','[email protected]');>.
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/ae25d932-a31b-4a23-aac3-4b9920fb710e%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/ae25d932-a31b-4a23-aac3-4b9920fb710e%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CA%2Be%2BciUyYzzjFDdceXzF%3DCyhiqeCKRGj3FyZdwU1rV0V417Enw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to