【发布时间】:2013-04-21 04:40:44
【问题描述】:
我有一个 User 对象和一个 UserInfo 对象,它们具有一对一的关系。我只是添加了UserInfo 对象,所以一些用户已经拥有User 对象但没有UserInfo 对象。我想检查 User 对象是否有与之关联的 UserInfo 对象,如果没有,则将它们重定向到我可以获得一些信息的页面。我还是 python 的新手,并尝试做一个if request.user.user_info:,当它不存在时会引发异常,所以我最终这样做了:
user = request.user
try:
user.user_info.university
except:
print 'redirect to info page'
这很好用,但我觉得异常应该是异常而不是 if 语句替代。有没有更好的方法来做到这一点?
【问题讨论】:
-
试试
hasattr(user, 'user_info')和'user_info' in user。 -
要考虑的另一件事是,如果每个用户都应该有一个
UserInfo对象,您可以订阅用户创建信号并为每个创建的用户自动初始化一个UserInfo对象。 docs.djangoproject.com/en/dev/topics/signals