orgweb/blog/blog-2012-04-24-1551.org
2012-06-21 21:24:54 +02:00

1.3 KiB

Silly django confusion

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):
    field1 = models.CharField(max_lenth=200)

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.