我有这样的功能:
def foo(bar):
...
现在bar
可以是 Django 记录,也可以是指向记录的 slug。我需要这种灵活性,以便当我手头有实际记录时可以调用这个函数,或者从一个更通用的函数调用这个函数,该函数只有 bar 作为字符串可用(从数据库中提取)。
我意识到我可以做类似的事情:
def foo(bar):
try:
bar.pk
except AttributeError:
bar = Bar.objects.get(slug=bar)
...
但这似乎一点也不优雅。
如果可以的话,我想避免使用 isinstance。