-1

「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

4

1 に答える 1

0

なんらかの読み込みの問題でした。ここで解決策を見つけました。

urls.py の管理者自動検出機能の前に、このスニペットを使用してモデルの読み込みを強制できます。

from django.db.models.loading import cache as model_cache
if not model_cache.loaded:
    model_cache.get_models()

トラブルシューティングを手伝ってくれたすべての人に感謝します。私はいつも何かを学びます。

于 2014-05-20T00:17:32.143 に答える