summaryrefslogtreecommitdiffstats
path: root/blog/blog-2012-04-24-1551.org
blob: 3d9c7b29bf0b74f1961ab41561763a7d360663c5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#+TITLE: Silly django confusion
#+DESCRIPTION: Think about this next time...

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:

#+BEGIN_SRC sql
SELECT * FROM app_table;
    => 3 rows of data
#+END_SRC

#+BEGIN_SRC python
from app.models import Table

Table.objects.count()
    => 3

Table.objects.all()
    => []
#+END_SRC

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:

#+BEGIN_SRC python
from django.db import models

from app.models import SuperTable

class Table(SuperTable):
    field1 = models.CharField(max_lenth=200)
#+END_SRC

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.