クラスは、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')