2016-07-12 8 views
0

Ich versuche, die Namen der Klassen zu erhalten, die ich in meiner models.py-Datei definiert habe. Der nächstgelegene ich bekommen konnte ist, alle Modelle in der Anwendung wiederherzustellen:Erhalte den Namen der Klassen, die ich im Django-Modell definiert habe

modelsList = django.apps.apps.get_models (include_auto_created=False)` 

die gibt:

<class 'django.contrib.admin.models.LogEntry'> 
<class 'django.contrib.auth.models.Permission'> 
<class 'django.contrib.auth.models.Group'> 
<class 'django.contrib.auth.models.User'> 
<class 'django.contrib.contenttypes.models.ContentType'> 
<class 'django.contrib.sessions.models.Session'> 
<class 'app.models.Project'> 
<class 'app.models.User'> 
<class 'app.models.File'> 

Aber ich wollte nur die Zeichenfolge ‚Projekt‘, ‚User‘, ‚Datei‘. Kann ich das überhaupt bekommen?

+0

Iterate über diese Klassen, greifen Sie auf das Attribut "__name__". – jonrsharpe

+0

Verstanden! Danke vielmals! –

Antwort

0

Basierend auf a answer from here:

from django.apps import apps 

def get_models(app_name): 
    myapp = apps.get_app_config(app_name) 
    return myapp.models.values() 
+0

Vielen Dank! Funktioniert perfekt! –

+0

@AnkitaNand: Großartig! Bitte akzeptiere die Antwort. – Tiago

0

Sie können die Modellnamen für ein Modell bekommen Model mit Model._meta.object_name. So könnten Sie etwas tun wie:

import django.apps 
models = django.apps.apps.get_models(include_auto_created=False) 
model_names = [m._meta.object_name for m in models]