Hi,

The model name is hidden in model.__name__ or model._meta.model_name, and 
you can't access attributes starting with underscore in templates.

This might work:

from django.db.models import get_app, get_models 

def index(request):
    app = get_app('sampledb')
    modeldict = {model._meta.model_name: model for model in get_models(app)}
    return render(request, 'sampledb/index.html', {'my_models': modeldict)

Collin

On Sunday, December 21, 2014 8:44:58 PM UTC-6, llanitedave wrote:
>
> I'm trying to display a list of the models in my app on a web page, 
> similar to the way the Django Admin does it.  I'm not sure where the admin 
> section is coded, which might be part of my problem.
>
> I'm using Django 1.7, and have built a very simple view:
>
> from django.db.models import get_app, get_models 
>
> def index(request):
> app = get_app('sampledb')
> modellist = get_models(app)
> context = {'my_models': modellist}
> return render(request, 'sampledb/index.html', context)
>
> in my index.html page I created a table:
>
> {% if my_models %}
>     <p>{{ my_models }}</p>
>     <table>
>         <thead>
>     <tr>
>         <th scope="col">Name</th>
> <th scope="col">Verbose Plural</th>
>     </tr>
> </thead>
> <tbody>
>     {% for model in my_models %}
>     <tr>
>         <td>{{ model.name }}</td>
> <td>{{ model.meta.verbose_name_plural }}</td>
>     </tr>
>     {% endfor %}
> </tbody>
>     </table>
> {% endif %}
>
>
> When I run this, my webpage first displays the <p>{{ my_models }}</p>, 
> showing a list of model classes, such as <class 'sampledb.models.Sites'>, 
> <class 'sampledb.models.People'>, etc.
>
> I guess that's my first hint that getting attributes from the 'model.name' 
> isn't going to display anything, and it doesn't.  But it doesn't give an 
> error, either.
>
> How do I dig into the class to retrieve the actual model so that I can 
> display its attributes?
>
>

-- 
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/ca4f0c07-9c45-406c-8cae-ad8e5906b6cb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to