检查 Django 中的 OneToOneField 是否为 None

新手上路,请多包涵

我有两个这样的模型:

 class Type1Profile(models.Model):
    user = models.OneToOneField(User, unique=True)
    ...

class Type2Profile(models.Model):
    user = models.OneToOneField(User, unique=True)
    ...

如果用户有 Type1 或 Type2 配置文件,我需要做一些事情:

 if request.user.type1profile != None:
    # do something
elif request.user.type2profile != None:
    # do something else
else:
    # do something else

但是,对于没有 type1 或 type2 配置文件的用户,执行这样的代码会产生以下错误:

 Type1Profile matching query does not exist.

如何检查用户的个人资料类型?

谢谢

原文由 John Bright 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 414
1 个回答

要检查 (OneToOne) 关系是否存在,您可以使用 hasattr 函数:

 if hasattr(request.user, 'type1profile'):
    # do something
elif hasattr(request.user, 'type2profile'):
    # do something else
else:
    # do something else

原文由 joctee 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题