Классы - это объекты "первого класса" в Python, то есть они могут передаваться и управляться так же, как и все другие объекты.
Модели - это классы - из того, что вы создаете новые модели, используя операторы классов, можно сказать:
class Person(models.Model):
last_name = models.CharField(max_length=64)
class AnthropomorphicBear(models.Model):
last_name = models.CharField(max_length=64)
Оба идентификатора Person
и AnthropomorphicBear
связаны с классами Django, так что вы можете передавать их. Это может быть полезно, если вы хотите создать вспомогательные функции, которые работают на уровне модели (и имеют общий интерфейс):
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))
То есть print_obj_by_last_name
будет работать с моделями Person
или AnthropomorphicBear
. Просто передайте модель так:
print_obj_by_last_name(model=Person, last_name='Dole')
print_obj_by_last_name(model=AnthropomorphicBear, last_name='Fozzy')