queryset.get Tune para trabalhar sem exceção DoesNotExist no Gerenciador de modelo

votos
1

Eu tenho dois modelos similares com um dirigente comum, que retorna queryset para usuário conectado atual. Quero User_Places.current_user.get (local = XXX) retorna User_Place objeto () ou User_Places vazios () existente, quando DoesNotExist exceção levantada. Como isso é possível? não CurrentUserManager não sabe nada sobre User_Places e modelos user_projects, se eu estou certo?

Eu só não quero escrever sempre:

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

Código de meus modelos:

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
Publicado 06/05/2009 em 17:55
fonte usuário
Em outras línguas...                            


1 respostas

votos
2

Solução encontrada aqui . Há self.model () dentro classe Manager:

class CurrentUserManager(models.Manager):
    ....
    def get(self, *args, **kwargs):
        try:
            object = super(CurrentUserManager, self).get(*args, **kwargs)
        except:
            object = self.model(**kwargs)
        return object
Respondeu 06/05/2009 em 20:27
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more