Question: Without having the full module path of a Django model, is it possible to do something like:

```
model = 'User' [in Django namespace]
model.objects.all()

```

...as opposed to:

```
User.objects.all().

```

EDIT: I am trying to make this call based on command-line input. Is it possible to avoid the import statement, e.g., 

```
model = django.authx.models.User

```

Without Django returning the error:

```
"global name django is not defined."

```

Answer: 
For Django 1.7+, there is an [applications registry](https://docs.djangoproject.com/en/1.8/ref/applications/#module-django.apps). You can use the [`apps.get_model`](https://docs.djangoproject.com/en/1.8/ref/applications/#django.apps.apps.get_model) method to dynamically get a model.

```
from django.apps import apps
MyModel = apps.get_model('app_label', 'MyModel')

```
Classes are "first class" objects in Python, meaning they can be passed around and manipulated just like all other objects.

Models are classes -- you can tell from the fact that you create new models using class statements:

```
class Person(models.Model):
    last_name = models.CharField(max_length=64)

class AnthropomorphicBear(models.Model):
    last_name = models.CharField(max_length=64)

```

Both the `Person` and `AnthropomorphicBear` identifiers are bound to Django classes, so you can pass them around. This can useful if you want to create helper functions that work at the model level (and share a common interface):

```
def print_obj_by_last_name(model, last_name):
    model_name = model.__name__
    matches = model.objects.filter(last_name=last_name).all()
    print('{0}: {1!r}'.format(model_name, matches))

```

So `print_obj_by_last_name` will work with either the `Person` or `AnthropomorphicBear` models. Just pass the model in like so:

```
print_obj_by_last_name(model=Person, last_name='Dole')
print_obj_by_last_name(model=AnthropomorphicBear, last_name='Fozzy')

```