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]]