「FieldError: キーワード 'game' をフィールドに解決できません。選択肢は次のとおりです: [選択肢のリスト]」をスローする Django プロジェクトがあります。
面白いことに、settings.py で DEBUG が無効になっている場合にのみ発生します。DEBUG を有効にすると、すべて正常に動作するように見えます。
エラーを引き起こすコードを特定しました。私のモデルは次のようになります。
from django.db import models
from django.forms import ModelForm
from time import strftime
from rostermaker.models import Player
from django.core.exceptions import ValidationError
from django.utils import timezone
class Game(models.Model):
when = models.DateTimeField(unique = True)
opponent = models.CharField(max_length = 50, default="TBD")
...
def __unicode__(self):
when = timezone.localtime(self.DateTime)
return when.strftime('%a, %b %d, %Y %I:%M %p')
class Stat(models.Model):
g = models.ForeignKey(Game, related_name = 'stat_game')
player = models.ForeignKey(Player, related_name = 'stat_player', limit_choices_to={'active': True})
...
admin.py では、.count および .filter 行がエラーをトリガーします。
def save_model(self, request, obj, form, change):
obj.save()
form.save_m2m()
count = obj.players.count()
women = obj.players.filter(sex='F')
women_count = women.count()
if count != 0:
women_pct = int((women_count/float(count))*100)
self.message_user(request,"Players scheduled: %s | Women: %s percent" % (count, women_pct))
else:
self.message_user(request,"Players scheduled: 0 | Women: 0 percent")
いくつかのビューで、次のような行が原因でエラーが発生します。
played_games_list = Game.objects.filter(DateTime__lte=timezone.now()).order_by('-when')
Django バージョン 1.4 と PostgreSQL 8.4.20 を使用しています。
ここで読んだことから推測するに、Game クラスが適切にロードされていないということです。しかし、DEBUG がオンのときに正しくロードされているように見えるのはなぜでしょうか。
どんな助けでも大歓迎です。
更新:要求に応じてトレースバック:
トレースバック (最新の呼び出しが最後):
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/core/handlers/base.py" の 111 行目、get_response で response = callback(request, *callback_args, **callback_kwargs)
ファイル「/home/bwareham/webapps/mprsb/lib/python2.7/django/contrib/admin/options.py」、366 行目、ラッパー return self.admin_site.admin_view(view)(*args, **kwargs)
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/utils/decorators.py"、91 行目、_wrapped_view 応答 = view_func(request, *args, **kwargs)
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/views/decorators/cache.py"、89 行目、_wrapped_view_func 応答 = view_func(request, *args, **kwargs)
ファイル「/home/bwareham/webapps/mprsb/lib/python2.7/django/contrib/admin/sites.py」、行 196、内部リターン ビュー (request、*args、**kwargs)
ファイル「/home/bwareham/webapps/mprsb/lib/python2.7/django/utils/decorators.py」の 25 行目、_wrapper で bound_func(*args, **kwargs) を返す
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/utils/decorators.py"、91 行目、_wrapped_view 応答 = view_func(request, *args, **kwargs)
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/utils/decorators.py"、21 行目、bound_func で func(self, *args2, **kwargs2) を返す
ファイル「/home/bwareham/webapps/mprsb/lib/python2.7/django/db/transaction.py」、行 224、内部 return func(*args, **kwargs)
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/contrib/admin/options.py"、955 行目、add_view self.save_model(request, new_object, form, False) 内
ファイル「/home/bwareham/webapps/mprsb/myproject/rostermaker/admin.py」、69 行目、save_model count = obj.players.count() 内
ファイル「/home/bwareham/webapps/mprsb/lib/python2.7/django/db/models/manager.py」、119行目、count return self.get_query_set().count()
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/db/models/fields/related.py"、567 行目、get_query_set で super(ManyRelatedManager, self).get_query_set().using(db を返す._next_is_sticky().filter(**self.core_filters)
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/db/models/query.py"、624 行目、フィルターで self._filter_or_exclude(False, *args, **kwargs) を返す
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/db/models/query.py"、642 行目、_filter_or_exclude clone.query.add_q(Q(*args, **kwargs)) 内
ファイル「/home/bwareham/webapps/mprsb/lib/python2.7/django/db/models/sql/query.py」、1250行目、add_q can_reuse=used_aliases、force_having=force_having)
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/db/models/sql/query.py"、1122 行目、add_filter process_extras=process_extras 内)
ファイル "/home/bwareham/webapps/mprsb/lib/python2.7/django/db/models/sql/query.py"、1316 行目、setup_joins の "Choices are: %s" % (name, ", ".参加(名前)))
FieldError: キーワード 'game' をフィールドに解決できません。選択肢は次のとおりです。Hall of Fame、active、alias、battingchamps、bombat、captains、firstName、goldengloves、id、lastName、mostimproved、mvp、photo、rookies、roster、sex、walker、whipet