Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Django
Search
flaper87
April 24, 2012
6
710
Django
flaper87
April 24, 2012
Tweet
Share
More Decks by flaper87
See All by flaper87
Inheriting code… and I don’t mean classes
flaper87
0
250
Don't try to look smart, be smart
flaper87
0
180
Keeping up with the pace of a fast growing community without dying
flaper87
0
190
A walk to remember: Debugging a distributed system failure
flaper87
0
210
Managing requirements for a many-thousands contributors software
flaper87
0
90
Fast-forward to today's Zaqar
flaper87
0
140
Breaking Backwards Compatibility: The easy way
flaper87
1
160
A functional view to Rust
flaper87
1
140
Rust - A walk to concurrency
flaper87
3
590
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
358
30k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
30
9.7k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
18
1.1k
[RailsConf 2023] Rails as a piece of cake
palkan
57
5.8k
GitHub's CSS Performance
jonrohan
1032
460k
Writing Fast Ruby
sferik
628
62k
How STYLIGHT went responsive
nonsquared
100
5.8k
The Cult of Friendly URLs
andyhume
79
6.6k
For a Future-Friendly Web
brad_frost
180
9.9k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.1k
A Modern Web Designer's Workflow
chriscoyier
696
190k
Transcript
So you want to use DJANGO AND MONGODB @flaper87
THAT’S COOL, but you n d to know A COUPLE
OF THINGS DJANGO AND MONGODB
LIKE: WHAT ARE THE OPTIONS?
An object-document mapper to connect Python and MongoDB ( http://mongoengine.org
)
Another ODM that takes mongodb into the web Mongokit (
http://namlook.github.com/mongokit/ )
OR, OF COURSE
DJANGO MONGODB ENGINE (A MongoDB backend for Django)
DJANGO-NONREL A good and up to date Django fork that
brings non-rel support
django.contrib.* Sadly, some of your may be broken, but not
the admin
erm... OKAY WHAT’S SO COOL ABOUT THIS THEN?
No anges n ded. WHAT’S SO COOL ABOUT THIS THEN?
No anges n ded. NOBODY’S GONNA TOUCH YOUR PRECIOUS BUILTINS.
ABOUT THIS THEN?
NOBODY’S GONNA TOUCH YOUR PRECIOUS BUILTINS. REDUCED IMPEDANCE MISSMATCH
WHAT ELSE? at’s c l
NEW FIELDS
AGGREGATIONS
GRIDFS
CACHING
MAP / REDUCE >>> for pair in Article.objects.map_reduce(_map, _reduce, 'wordcount'):
... print pair.key, pair.value
NEW INDEXES class Club(models.Model): location = ListField() rating = models.FloatField()
... class MongoMeta: indexes = [ [('rating', -1)], {'fields': [('location', '2d')], 'min': -42, 'max': 42}, ]
TONS OF DOCS Plus: (which never hurts)
Su estions
RAW QUERIES MyModel.objects.raw_query(field=“value”)
EMBEDD IF POSSIBLE class Comment(models.Model): created_on = models.DateTimeField() author =
EmbeddedModelField('Author') text = models.TextField()
RE-THINK YOUR MODELS class Post(models.Model): title = models.CharField() text =
models.TextField() tags = ListField() # Note: Use defer comments = ListField(EmbeddedModelField('Comment'))
DO NOT USE IT EVERYWHERE MONGODB_MANAGED_APPS = ['myapp'] MONGODB_MANAGED_MODELS =
['myapp.MongoDBModel']
SERVE STATIC FILES GridFSStorage + nginx-GridFS
AGGREGATIONS? MAP/REDUCE class Min(MongoAggregate): initial_value = float('inf') reduce_template = '{alias}
= ({lookup}<{alias})?{lookup}:{alias}' class Max(MongoAggregate): initial_value = float('-inf') reduce_template = '{alias} = ({lookup}>{alias})?{lookup}:{alias}'
DATES WORK But, MongoDB does not support month/day queries
DO NOT TRY TO MIGRATE It Wont Work!
CONTRIBUTE The Compiler’s a mess
A away Contribute: http://django-mongodb.org /meta/contributing.html http://groups.google.com /group/django-non-relational