2

数週間前に django チュートリアル パート 1 を開始し、戻ってきて、Poll が Question に変更されていることに気付きました。models.py ファイルを最初に変更しようとしたとき

class Poll(models.Model):

class Question(models.Model):

実行後:

 python manage.py sql polls

次のエラーが表示されます。

NameError: name 'Poll' is not defined

私の最初の質問は、モデル ファイル内のクラスの名前を変更したい場合、そのようなエラーを回避するにはどうすればよいですか?

そのため、このエラーを排除するために Poll という名前のままにしました。ただし、チュートリアルの次の部分に到達したとき:

シェルに入ったら、データベース API を調べます。

from polls.models import 投票、選択

Poll.objects.all()

しかし、次のエラーが表示されます。

 File "<console>", line 1, in <module>
  File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 93, in __repr__
    data = list(self[:REPR_OUTPUT_SIZE + 1])
  File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 108, in __len__
    self._result_cache.extend(self._iter)
  File "/usr/lib/python2.6/site-packages/django/db/models/query.py", line 317, in iterator
    for row in compiler.results_iter():
  File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 775, in results_iter
    for rows in self.execute_sql(MULTI):
  File "/usr/lib/python2.6/site-packages/django/db/models/sql/compiler.py", line 840, in execute_sql
    cursor.execute(sql, params)
  File "/usr/lib/python2.6/site-packages/django/db/backends/util.py", line 41, in execute
    return self.cursor.execute(sql, params)
  File "/usr/lib/python2.6/site-packages/django/db/backends/mysql/base.py", line 128, in execute
    six.reraise(utils.DatabaseError, utils.DatabaseError(*tuple(e.args)), sys.exc_info()[2])
  File "/usr/lib/python2.6/site-packages/django/db/backends/mysql/base.py", line 120, in execute
    return self.cursor.execute(query, args)
  File "/usr/lib64/python2.6/site-packages/MySQLdb/cursors.py", line 201, in execute
    self.errorhandler(self, exc, value)
  File "/usr/lib64/python2.6/site-packages/MySQLdb/connections.py", line 36, in defaulterrorhandler
    raise errorclass, errorvalue
DatabaseError: (1054, "Unknown column 'polls_poll.question_text' in 'field list'")

それで、ここで何がうまくいかないのか疑問に思っています。

ありがとう

4

3 に答える 3

2

モデルの名前を変更しましたが、まだ古い名前を使用してアクセスしています。ここで、新しい名前を使用してアクセスする必要があります。あなたもしなければならないでしょう

python manage.py syncdb

モデルに変更を加えたら、データベース テーブルを同期します。

from polls.models import Question, Choice

Question.objects.all()

それでもデータベース エラーが発生する場合は、データベース ファイルを削除し、syncdb を再度実行します。実際の開発では南を使用

于 2013-10-24T16:54:37.937 に答える
1

モデル クラス名を に変更した場合Questionは、チュートリアルの行を次のように変更する必要があります。

#------------------------v
from polls.models import Question, Choice

Question.objects.all()

syncdbまた、同様に行う必要があります。

于 2013-10-24T12:48:07.303 に答える