У меня есть две аналогичные модели с одним общим диспетчером, который возвращает набор запросов для текущего зарегистрированного пользователя. Я хочу, чтобы User_Places.current_user.get (place = XXX) возвращает существующий объект User_Place() или пустой User_Places(), когда возникло исключение ExcNotExist. Как это возможно? CurrentUserManager ничего не знает о моделях User_Places и User_Projects, если я прав?Tune queryset.get для работы без исключения DoNotExist в диспетчере модели
Я просто не хочу писать всегда:
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 ссылается на UserManager вообще? –
Ответ на второй вопрос: CurrentUserManager позволяет создавать объекты UserProjects и UserPlaces специально для текущего зарегистрированного пользователя. И я не понял первый вопрос, извините. – ramusus