MongoDB est non-relationnelle, et en tant que tel vous ne pouvez pas faire des choses comme les jointures, etc. Pour cette raison, beaucoup des applications django.contrib, et d'autres applications 3ème partie sont susceptibles de pas de travailler avec mongodb. Mongodb peut être très utile si vous avez besoin de stocker des objets complexes sans entrer directement dans postgresql (bien sûr, vous pouvez json-sérialiser et mettre dans un champ de texte, mais utiliser mongodb à la place est bien meilleur, vous permet de faire des recherches, ..).
Donc, la meilleure suggestion est d'utiliser deux bases de données:
- PostgreSQL pour les applications standard, comme noyau de django, l'authentification, ...
- MongoDB uniquement pour votre application, lorsque vous devez stockez des objets complexes non relationnels
Vous pouvez également utiliser les méthodes raw_*
qui ignorent une bonne partie de la validation (généralement inutile) par le django orm. Rappelez-vous simplement que les bases de données, en particulier sql vs no-sql, ne sont pas des remplacements interchangeables, mais qu'elles ont leurs propres caractéristiques, avantages et inconvénients, vous devez donc déterminer celle qui convient le mieux à vos besoins dans chaque cas, pas seulement en choisir un et l'utiliser pour tout.
MISE À JOUR
J'ai oublié de dire: rappelez-vous que vous devez utiliser la fourchette django-nonrel afin de rendre django prennent en charge les bases de données non relationnelles. Il s'agit actuellement d'un fork de django 1.3, mais une version basée sur 1.4 est en cours de développement.
+ 1 affecté. Pouvez-vous fournir un lien vers une ressource sur les méthodes 'raw_ *'? Merci. –
@JosvicZammit https://docs.djangoproject.com/fr/1.4/topics/db/sql/ –
@JosvicZammit ici c'est la documentation officielle: http://django-mongodb.org/reference/lowerlevel.html – redShadow