Vivek Sable
Vivek Sable

Reputation: 10213

DatabaseError: column does not exist

I added New Column FK_Project in the rw_item Table, which is reference of the Project_Master table.

dp=# ALTER TABLE digital_publisher_rw_item ADD FK_Project int; 
ALTER TABLE


dp=# ALTER TABLE digital_publisher_rw_item ADD FOREIGN KEY(FK_Project) REFERENCES digital_publisher_project_master(id);
ALTER TABLE

Now I am writing script to add values of to Column FK_Project in the rw_item Table.

But getting following exception,

Exception:

>>> rw_item
<class 'dp.digital_publisher.models.rw_item'>
>>> rw_item.objects.all()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 67, in __repr__
    data = list(self[:REPR_OUTPUT_SIZE + 1])
  File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 82, in __len__
    self._result_cache.extend(self._iter)
  File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 271, in iterator
    for row in compiler.results_iter():
  File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 677, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 732, in execute_sql
    cursor.execute(sql, params)
  File "/usr/lib/python2.6/site-packages/django/db/backends/util.py", line 15, in execute
    return self.cursor.execute(sql, params)
  File "/usr/lib/python2.6/site-packages/django/db/backends/postgresql_psycopg2/base.py", line 44, in execute
    return self.cursor.execute(query, args)
DatabaseError: column digital_publisher_rw_item.FK_Project_id does not exist
LINE 1: ..."digital_publisher_rw_item"."deletion_date_time", "digital_p...
                                                             ^

Django models.py:

FK_Project = models.ForeignKey(Project_Master, null=True, blank=True)

How to handle this?

Upvotes: 0

Views: 768

Answers (1)

Joey Wilhelm
Joey Wilhelm

Reputation: 5819

Since you are adding fields manually, instead of using Django's database migrations, as noted by Shang Wang, you just need to make sure that the field names match up. In this case, take note of the exact error given by Django:

DatabaseError: column digital_publisher_rw_item.FK_Project_id does not exist

It is looking for FK_Project_id, as opposed to the FK_Project, which you added. This is because of a convention in Django, which appends _id to the end of ForeignKey columns. So, you have two options for handling this:

  1. Rename the column in the database: ALTER TABLE digital_publisher_rw_item RENAME COLUMN FK_Project TO FK_Project_id

  2. Tell Django to use the column you created: FK_Project = models.ForeignKey(Project_Master, null=True, blank=True, db_column='FK_Project')

Upvotes: 1

Related Questions