类是 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')