I'm pretty sure that I have them correct -- it'd be weird if I'd managed to 
include a typo in all six fields of the real form -- but I'll double check 
it on Monday when I get back into the office.  And thanks, I'll look into 
Formsets too!

On Saturday, April 9, 2016 at 9:25:40 AM UTC-5, [email protected] wrote:
>
> Are you sure you have the name of the fields correct? According to the 
> documentation {{ form.fieldname }} should do what you want. It sounds like 
> formsets would be more appropriate for what you're trying to achieve though.
>
> And yeah, if you're going to go that specific you might as well render all 
> the fields completely manually :)
>  
>
> On Saturday, April 9, 2016 at 12:21:24 AM UTC+2, David McWilliams wrote:
>>
>> tl:dr -- How do I explicitly render the fields in a form that's passed to 
>> the context dictionary within an object?
>>
>> I'm building a page right now that shows a list of documents to the user. 
>>  Each document has a type, a status, a list of images associated with it, 
>> and finally a document update form with a few fields in it.  Because all of 
>> these pieces of data belong together, I created a class to group them for 
>> display (this is a simplified version for example only):
>>
>> class Document:
>>     def __init__(self, doc_type, doc_status):
>>         self.doc_type = doc_type
>>         self.doc_status = doc_status
>>         self.update_form = DocUpdateForm()
>>
>> def doc_view(request):
>>     # ... some other stuff to get the raw data ...
>>
>>     documents = []
>>
>>     for raw_doc in raw_document_data:
>>         documents.append(Document(raw_doc.doc_type, raw_doc.doc_status))
>>
>>     context['documents'] = documents
>>
>>     return render_to_response('doc_list.html', context)
>>
>> This all worked fine, because then in my template I was able to do 
>> something nice and simple like this:
>>
>> ...
>> <h2>Documents</h2>
>> <table>
>>   <tr><th>Document Type</th><th>Document Status</th><th>Update</th></tr>
>>   {% for doc in documents %}
>>     <tr>
>>       <td>{{ doc.doc_type }}</td>
>>       <td>{{ doc.doc_status }}</td>
>>       <td><form>{{ doc.update_form }}<input type='submit'/></form></td>
>>     </tr>
>>   {% endfor %}
>> </table>
>>
>> Piece of cake, right?
>>
>> Well, now we want to change the page so that some of the form fields are 
>> inside of one div, and some inside of another one so that they can be next 
>> to one another instead of oriented vertically.  I consulted the Django 
>> documentation here: 
>> https://docs.djangoproject.com/en/1.9/topics/forms/#rendering-fields-manually
>>  and 
>> decided to render each of the fields myself.  This resulted in something 
>> like:
>>
>> ...
>> <h2>Documents</h2>
>> <table>
>>   <tr><th>Document Type</th><th>Document Status</th><th>Update</th></tr>
>>   {% for doc in documents %}
>>     <tr>
>>       <td>{{ doc.doc_type }}</td>
>>       <td>{{ doc.doc_status }}</td>
>>       <td><form><div>{{ doc.update_form.field_1 }}</div>
>>                 <div>{{ doc.update_form.field_2 }}</div>
>>                 <input type='submit'/></form></td>
>>     </tr>
>>   {% endfor %}
>> </table>
>>
>>
>> Unfortunately, all this does is render the text "doc.update_form.field_1" 
>> instead of the form field.  It's the same behavior that I see when I 
>> accidentally try to reference a key that doesn't exist in the context 
>> dictionary.
>>
>> I can, of course, just write the form fields HTML by hand . . . but 
>> goshdarnit, I'm a developer, and I want to know why the lazy way isn't 
>> working.  Do I need to reference the form fields differently than the 
>> documentation suggests?  Is it because I'm passing the forms to the context 
>> inside of another object?  Should I be learning how to use formsets and/or 
>> fieldsets?
>>
>> This app uses Django 1.8, in case that's important.
>>
>

-- 
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 https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/bd03b73a-fe02-468c-ac47-5d40b59925cd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to