diff --git a/posts/Silly_django_confusion.mdwn b/posts/Silly_django_confusion.mdwn new file mode 100644 index 0000000..3939fdb --- /dev/null +++ b/posts/Silly_django_confusion.mdwn @@ -0,0 +1,38 @@ +I'm setting up a testing environment for work, using fixtures to save +and load test data and I got a little stumped by something I ran into. + +I had exported one of the database tables we use to a json file that I +was going to import into a fresh new database to test with. When I +imported it everything seemed fine, except when looking at the actual +page. So this is what I found: + +
SELECT * FROM app_table; + => 3 rows of data+ +
from app.models import Table + +Table.objects.count() + => 3 + +Table.objects.all() + => []+ +This is weird. So I looked at the `django.db.connection.queries` +property and I realized that it was doing a join since the model +subclasses another: + +
from django.db import models + +from app.models import SuperTable + +class Table(SuperTable):...+ + +Which, of course, means that in order to get the complete `Table` +instance, the related `SuperTable` instance is also required, but in +order to do a `COUNT` of `app_table` it isn't necessary. And that's +where the inconsistency came from, now that I've also copied the +contents of `SuperTable` everything is fine again. + +[[!meta date="2012-04-24 15:51:00"]] +[[!tag python django coding]]