簡體   English   中英

DatabaseError:列不存在

[英]DatabaseError: column does not exist

我在rw_item表中添加了New Column FK_Project ,這是Project_Master表的引用。

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

現在,我寫劇本的增加值列FK_Projectrw_item表。

但是要追隨異常

例外情況

>>> 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)

如何處理呢?

由於您是手動添加字段,而不是像Shang Wang那樣使用Django的數據庫遷移 ,因此您只需要確保字段名稱匹配即可。 在這種情況下,請注意Django給出的確切錯誤:

DatabaseError: column digital_publisher_rw_item.FK_Project_id does not exist

它正在尋找FK_Project_id ,而不是您添加的FK_Project 這是因為Django中有一個約定,該約定將_id追加到ForeignKey列的末尾。 因此,您有兩種選擇來處理此問題:

  1. 重命名數據庫中的列: ALTER TABLE digital_publisher_rw_item RENAME COLUMN FK_Project TO FK_Project_id

  2. 告訴Django使用您創建的列: FK_Project = models.ForeignKey(Project_Master, null=True, blank=True, db_column='FK_Project')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM