45 lines
1.3 KiB
Org Mode
45 lines
1.3 KiB
Org Mode
|
#+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.
|