私はこのような機能を持っています:
def foo(bar):
    ...
barこれで、Djangoレコードまたはレコードを指すスラッグのいずれかになります。実際のレコードが手元にあるときにこの関数を呼び出すことができるように、または文字列としてのみ使用可能なバー(データベースから取得)を持つより一般的な関数からこれを呼び出すことができるように、この柔軟性が必要です。
私は次のようなことができることに気づきました。
def foo(bar):
    try:
        bar.pk
    except AttributeError:
        bar = Bar.objects.get(slug=bar)
    ...
しかし、これはまったくエレガントではないようです。
可能であれば、isinstanceの使用を避けたいと思います。