J'ai deux modèles similaires avec un gestionnaire commun, qui retourne un jeu de requête pour l'utilisateur actuellement connecté. Je souhaite que User_Places.current_user.get (place = XXX) renvoie l'objet User_Place() existant ou vide User_Places(), lorsque l'exception DoesNotExist est déclenchée. Comment est-ce possible? CurrentUserManager ne sait rien sur les modèles User_Places et User_Projects, si je ne me trompe pas?Régler queryset.get pour travailler sans l'exception DoesNotExist dans le gestionnaire du modèle
Je ne veux pas seulement toujours écrire:
try:
places = User_Places.current_user.get(place=XXX)
except:
places = User_Places()
Code de mes modèles:
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
Qu'est-ce que UserProjects a à voir avec quoi que ce soit? Pourquoi UserProjects fait-il référence à UserManager? –
Réponse pour la deuxième question: CurrentUserManager permet d'obtenir des objets UserProjects et UserPlaces spécialement pour l'utilisateur actuellement connecté. Et je n'ai pas compris la première question, désolé. – ramusus