I have a problem with Django 1.2.4.
Here is the model:
class Foo(models.Model):
Immediately after cleaning the database, I use the shell:
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39) [GCC 4.4.5] on linux2 Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> from apps.foo.models import Foo >>> Foo.objects.all() Traceback (most recent call last): File "<console>", line 1, in <module> File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 67, in __repr__ data = list(self[:REPR_OUTPUT_SIZE + 1]) File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 82, in __len__ self._result_cache.extend(list(self._iter)) File "/usr/local/lib/python2.6/dist-packages/django/db/models/query.py", line 271, in iterator for row in compiler.results_iter(): File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 677, in results_iter for rows in self.execute_sql(MULTI): File "/usr/local/lib/python2.6/dist-packages/django/db/models/sql/compiler.py", line 732, in execute_sql cursor.execute(sql, params) File "/usr/local/lib/python2.6/dist-packages/django/db/backends/util.py", line 15, in execute return self.cursor.execute(sql, params) File "/usr/local/lib/python2.6/dist-packages/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute return self.cursor.execute(query, args) DatabaseError: column foo_foo.bar_id does not exist LINE 1: ...t_omg", "foo_foo"."ftw", "foo_foo...
What am I doing wrong here?
Refresh . If I comment on ForeignKey , the problem will go away.
Update 2 . Curiously, this unit test works just fine:
def test_foo(self): f = Foo() f.save() self.assertTrue(f in Foo.objects.all())
Why does it work here, but not in the shell?
Update 3 . The reason it works in unit testing, but not the shell, may have something to do with the various databases used:
settings.py
DATABASES = { 'default': { 'ENGINE': 'postgresql_psycopg2', 'NAME': 'foo', 'USER': 'bar', 'PASSWORD': 'baz', 'HOST': '', 'PORT': '', } } import sys if 'test' in sys.argv or True: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': 'testdb' } }
Update 4 : it is confirmed that when I use SQLite3 as db everything works fine.