L’expérience est une lanterne que l’on porte sur le dos et qui n’éclaire jamais que le chemin parcouru. Confucius

Aller au contenu | Aller au menu | Aller à la recherche

mardi, 4 mars 2014

Chainer les requêtes Django


from datetime import datetime
from django.db.models import Manager
from django.db.models.query import QuerySet
class TodoMixin(object):
def is_done(self):
return self.filter(done=is_true))
#ecrire ici vos nouvelles méthodes
def order_by_user(self):
return self.order_by(user)
class TodoQuerySet(QuerySet, TodoMixin):
pass
class TodoManager(Manager, TodoMixin):
def get_query_set(self):
return TodoQuerySet(self.model, using=self._db)
class Todo(models.Model):
done = models.BooleanField()
objects = TodoManager()

L'implémentation permet de passer de :

Todo.objects.filter(done = True)

à

Todo.objects.is_done()

Très pratique côté template.

 Et il est possible de chainer de la facon suivante :

Todo.objects.is_done().order_by_user()

jeudi, 24 novembre 2011

Django - Dénormalisation d'un queryset

Dans quelques rares cas, l'ORM de Django ne suffit plus. Lorsque votre requête est spécifique il existe plusieurs solutions que j'expose dans cet article illustré par le tri de liste.

Lire la suite...

mercredi, 23 novembre 2011

Django - QuerySetManager - Bonnes pratiques

J'ai déjà parlé de l'intérêt des querySetManager et de leur mise en place dans un projet Django. Désormais avec un peu de recul et l'intervention d'Olivier Meunier (l'homme aux milles pseudonymes), il semble plus pertinent d'externaliser la création du manager et du queryset. C'est à dire, pour l'exemple ci-dessous, définir tout ce joyeux code en dehors de la classe "Project".

Lire la suite...

jeudi, 15 septembre 2011

Django : Trier vos utilisateurs par ordre alphabétique

Il existe probablement d'autres solutions. Dans cet article je vous donne les clés pour réussir à trier correctement les utilisateurs par nom et prénom. L'exercice est assez simple lorsque l'utilisateur a renseigné correctement son identité, c'est à dire "Nom et Prénom". Cela devient plus chaotique, quand un seul des champs est renseigné.

Lire la suite...

vendredi, 8 juillet 2011

Turpial, client twitter rapide et complet pour Ubuntu

Bien que complet, je me suis vite lassé de Gwibber et notamment de son extrème lenteur. Le client twitter (écrit en python) que je vous propose aujourd'hui gère uniquement Twitter et Identica. Rapide, efficace parfaitement intégré à Gnome, c'est LE client desktop qu'il faut installer.

Lire la suite...

dimanche, 7 novembre 2010

Installation de django-debug-toolbar sur Ubuntu / Nginx

Django-debug-toolbar fait partie des outils indispensables du développeur django. C'est un formidable outil permettant de traquer les entrées-sorties de votre application ( requêtes http, requêtes bdd, sessions...). Comme à chaque fois, il existe plusieurs solutions pour installer des paquets python. Cet article présente l'installation de la django-debug-toolbar depuis les dépôts Ubuntu. Aussi, il vous sera grès d'adapter le passage "configuration" selon le type d'installation que vous avez effectué.En effet, les fichiers ne s'installent pas tous au même endroit.

Attention, l'ensemble des manipulations qui vont suivre peuvent rendre votre système d'exploitation Ubuntu instable. L'utilisation du compte admistrateur (commande sudo...) suscitent des risques pour lequel je décline toute responsabilité.

Lire la suite...

jeudi, 21 octobre 2010

Django Managers, Queryset Managers. Récupérer vos retraités rapidement.

Si je voulais faire simple et rapide je vous conseillerais de lire la documentation Django sur les Managers ainsi que la version 1.2. Tout est très bien expliqué. Je me permets ici de réexpliquer rapidement l'intérêt de la chose et de présenter une autre approche, tout aussi intéressante des querysets managers.

Lire la suite...

vendredi, 2 avril 2010

Django, internationaliser un "template tag"

De base la commande python manage.py makemessages -l fr permet de générer un fichier .po contenant les chaines à traduire. C'est pratique et puissant, car très rapidement, toutes chaines prêtes à être traduite dans les actions (views.py), les formulaires (forms.py), les modèles (models.py), les templates (*.html).. se retrouvent listées.
Le hic, c'est que cette commande est incapable de détecter les chaines à traduire dans nos templates tag perso. Il faut alors ajouter la bonne expression régulière au sein du code Django.

Modifier le code Django

Il y a probablement beaucoup plus propre mais voici la démarche :

  1. Localiser l'installation de django dans votre système ( via locate django)
  2. Localiser le fichier trans_real.pyc
  3. Ajouter une nouvelle expression régulière dans ce fichier
  4. Ajouter l'appel à l'expression régulière
  1. Editer le fichier : sudo vim /usr/local/lib/python2.6/dist-packages/django/utils/translation
  2. Ligne 406 ajouter : voir code -> permet de détecter les chaines de la forme {% sheet_field mon_objet "chaine à traduire" %}
  3. Ligne 462 ajouter : imatch2 = inline_re2.match(t.contents)
  4. Ligne 469 ajouter : voir code

Logiquement via la commande python manage.py makemessages -l fr de nouvelles chaines doivent être repérées. Sinon la compilation du fichier .po en fichier .mo reste identique via la commande python manage.py compilemessages . PS : J'utilise généralement poedit ou un simple éditeur de texte pour traduire les chaines et vous ?

 

vendredi, 22 janvier 2010

Utiliser bpython au sein de django pour Ubuntu

Django logo bugSuite au commentaire de Narbonne sur l'article d'hier "Quelques outils utiles pour django" je livre aujourd'hui la rapide manipulation permettant d'utiliser bpython avec django. Bpython est un terminal python avancé. En temps réel il colore, indente, propose les méthodes liées aux objets courants, via l'introspection. Il contient un historique, et des commandes rapides pour enregistrer et "pastebiner" le contenu du terminal sans le quitter. Bref on gagne du temps.

Lire la suite...

mercredi, 20 janvier 2010

Quelques outils utiles pour django sous Ubuntu - "Debugging"

Django logo bugTravaillant désormais depuis plus de neuf mois avec le framework django sur le prochain logiciel Opquast, je me permets, aujourd'hui, de fournir très modestement quelques retours d'expérience. Naturellement, toutes les étapes, les logiciels présentés ci-dessous sont compatibles avec la distribution Ubuntu. Pour MacOsX de simples adaptations semblent suffisantes, enfin pour Windows je vous laisse canoter. Cet article présente l'ensemble des outils me permettant de "débugger", tester plus rapidement du code "django / python". Attention, l'ensemble des manipulations qui vont suivre peuvent rendre votre système d'exploitation Ubuntu instable. L'utilisation du compte admistrateur (commande sudo...) suscitent des risques pour lequel je décline toute responsabilité.

Lire la suite...

mardi, 28 avril 2009

Django : Eliminer les doublons, utilisation de group by

Nous avons parfois besoin d'éviter les doublons en sortie de requête. Il existe plusieurs solutions afin obtenir satisfaction.

  • distinct()
  • values()
  • values_list()

Lire la suite...

mardi, 14 avril 2009

[Django 1.0] Commande automatique personnalisée

Pouvoir utiliser des commandes automatiques pour créer un script sql à partir d'un document json, obtenir un dump de la base, créer un projet .. bref c'est déjà bien pratique, mais développer ses propres commandes (en 5 minutes) c'est autre chose. je me permets ici de décrire rapidement sous forme d'item la marche à suivre. Cet article a pour principal but la découverte des commandes personnalisées en django.

Lire la suite...

lundi, 13 avril 2009

Participer au projet django-fr, traduction de la documentation depuis Ubuntu

django-logo-negative.resized.pngSi la majorité des informations sont disponibles sur la page bitbucket dédiée, il reste cependant quelques zones d'ombre pour les débutants souhaitant s'investir sur django-fr. J'oubliais, pour participer au projet de traduction, nul besoin d'être un cador du python ou autre langage. Ce qui suit se veut être un mode d'emploi pour tous les utilisateurs d'Ubuntu.

Lire la suite...

lundi, 10 novembre 2008

Aptana Studio 1.2, version standalone sous Ubuntu

AptanaAptana est un environnement de développement intégré orienté web, multi-plateforme et open-source. Il facilite l'écriture du code en fournissant des aides à la saisie pour le JavaScript, l'HTML, les CSS et PHP, Python, Ruby on Rails, Javascript. Cet IDE est disponible en deux versions : standalone ou en plugin pour le célèbre eclipse. Je décrirais ici l'installation sous linux de la première version.

Lire la suite...

mardi, 26 septembre 2006

API's Google

Depuis quelques temps déjà, Google est la référence en matière de recherche sur Internet. Qui n'a jamais essayé d'utiliser google.fr pour ces recherches ? Evidemment Google n'est pas unique en la matière, il existe Yahoo, Windows Live, Exalead, Lycos, et bien d'autres.Mais ces derniers sont loin d'avoir la popularité actuelle de Google. Depuis 2002, Google a décidé d'ouvrir son moteur de recherche en proposant une API.

Lire la suite...