24 April 2012 3:51 PM (python | django | coding)
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.