Configure queryset.get to work without exception Notes in Model Manager

I have two similar models with one common manager that returns a query for the current user. I want User_Places.current_user.get (place = XXX) to return an existing User_Place () object or empty User_Places () when an ExcNotExist exception is thrown. How is this possible? CurrentUserManager doesn't know anything about User_Places and User_Projects models if I'm right?

I just don't want to always write:

try:
    places = User_Places.current_user.get(place=XXX)
except:
    places = User_Places()

      

My models code:

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

      

+1


a source to share


1 answer


Found solution here . The Manager class has self.model ():



class CurrentUserManager(models.Manager):
    ....
    def get(self, *args, **kwargs):
        try:
            object = super(CurrentUserManager, self).get(*args, **kwargs)
        except:
            object = self.model(**kwargs)
        return object

      

+2


a source







All Articles