【发布时间】:2009-05-06 16:55:03
【问题描述】:
我有两个相似的模型和一个通用的管理器,它返回当前登录用户的查询集。当引发 DoesNotExist 异常时,我希望 User_Places.current_user.get(place=XXX) 返回现有的 User_Place() 对象或空的 User_Places()。这怎么可能? CurrentUserManager 对 User_Places 和 User_Projects 模型一无所知,如果我是对的?
我只是不想总是写:
try:
places = User_Places.current_user.get(place=XXX)
except:
places = User_Places()
我的模型代码:
class User_Places(models.Model):
place = models.ForeignKey('Place')
user = models.ForeignKey(User)
current_user = CurrentUserManager()
class User_Projects(models.Model):
project = models.ForeignKey('Project')
user = models.ForeignKey(User)
current_user = CurrentUserManager()
class CurrentUserManager(models.Manager):
def get_query_set(self):
user = threadlocals.get_current_user()
qs = super(CurrentUserManager, self).get_query_set()
if user:
qs = qs.filter(user=user)
return qs
def get(self, *args, **kwargs):
try:
object = super(CurrentUserManager, self).get(*args, **kwargs)
except:
object = ????????????????????????
return object
【问题讨论】:
-
UserProjects 与什么有什么关系?为什么 UserProjects 完全引用 UserManager?
-
第二个问题的答案:CurrentUserManager 允许专门为当前登录的用户获取 UserProjects 和 UserPlaces 对象。第一个问题我没听懂,抱歉。
标签: django django-models