【问题标题】:Error while fetching objects from Django model从 Django 模型中获取对象时出错
【发布时间】:2017-02-02 08:42:09
【问题描述】:

我想获取所有 Codes Model 对象并计算返回的对象的长度。我遇到了一个我无法理解的错误。

这是我的模特

class Codes(models.Model):
    username = models.CharField(max_length=100)
    code = models.CharField(max_length=10000)
    language = models.CharField(max_length=100)

    def __str__(self):
        return self.language

我正在使用以下函数从模型中获取所有对象

def get_all_codes(lang):
    queryset = Codes.objects.filter(language = lang)
    return queryset

调用函数

all_codes_of_lang = get_all_codes(lang)

并尝试使用以下方法计算长度:

if len(all_codes_of_lang) > 0:
    print("abc")

导致这个错误:

if len(all_codes_of_lang) > 0:
  File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 240, in __len__
    self._fetch_all()
  File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 1074, in _fetch_all
    self._result_cache = list(self.iterator())
  File "/usr/local/lib/python2.7/site-packages/django/db/models/query.py", line 52, in __iter__
    results = compiler.execute_sql()
  File "/usr/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 848, in execute_sql
    cursor.execute(sql, params)
  File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 79, in execute
    return super(CursorDebugWrapper, self).execute(sql, params)
  File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
  File "/usr/local/lib/python2.7/site-packages/django/db/utils.py", line 95, in __exit__
    six.reraise(dj_exc_type, dj_exc_value, traceback)
  File "/usr/local/lib/python2.7/site-packages/django/db/backends/utils.py", line 64, in execute
    return self.cursor.execute(sql, params)
ProgrammingError: relation "submissions_codes" does not exist
LINE 1: ...odes"."code", "submissions_codes"."language" FROM "submissio...
                                                             ^

-->

【问题讨论】:

  • 您的模型与数据库不同步。运行python manage.py makemigrationspython manage.py migrate 进行修复。

标签: django postgresql django-models


【解决方案1】:

这个问题不在于get_all_codes 函数或计算长度,而在于模型和数据库之间的同步问题。

运行 python manage.py makemigrationspython manage.py 迁移修复。

【讨论】:

    【解决方案2】:

    模型未迁移,这就是您收到此错误的原因。 运行以下命令

    • python manage.py makemigrations
    • python manage.py migrate

    【讨论】:

      猜你喜欢
      • 2020-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 2021-02-14
      • 2020-04-06
      • 2014-03-26
      相关资源
      最近更新 更多