。という名前のモデルを持つdjangoアプリケーションがありますTestCase
。現在DBに保存されているモデルのインスタンスは9つありTestCase.objects.all()
、シェルで実行すると確認できます。また、これらはビューに正しく表示されています。
ただし、実行している管理コマンドでは、同じクエリ(TestCase.objects.all()
)が常に空のリストを返します。モデルを正しくインポートしました。管理コマンドでも問題なくデータベースにエントリを追加できるため、データベースからの読み取りは問題ありません。
これを引き起こしている可能性があるものについてのアイデアはありますか?
いくつかのコンテキスト:djangoアプリは、テストケースを表示および管理するためのフロントエンドです。管理コマンドは、テストの結果をDBに読み込みます。テスト実行をアプリに組み込むには、管理コマンドでDBにアクセスする必要があります-テストケースがテスト実行(整数)を提供する場合はそれが使用されますが、提供されない場合、コマンドはテスト実行を1プラスに設定しますアプリにすでに存在する最大テスト実行-これは、DBにアクセスする必要がある場所です(のようなものを使用してTestCase.objects.all().aggregate(Max('test_run'))
)。
私はDjango1.4を使用しています。
これは管理コマンドです。
from django.core.management.base import NoArgsCommand
from django.core.management.base import AppCommand, CommandError
from mainapp.models import TestCase
from django.utils import timezone
from django.db.utils import IntegrityError
from django.conf import settings
from django.core import management
from django.db.models import Max
import cPickle
import errno
class Command(NoArgsCommand):
def handle_noargs(self, **options):
management.call_command('reset', 'mainapp', interactive=False)
print "ALL: %s" % TestCase.objects.all()
self.traverse()
def traverse(self):
...
出力はALL: []
です。メソッドのソースを省略しましたtraverse()
が、その前に問題が発生しているので、何の影響もありません。
DB内のインスタンスを示すシェルからの出力は次のとおりです。
[as@as-mac ui]$ pm shell
Python 2.6.1 (r261:67515, Jun 24 2010, 21:47:49)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from mainapp.models import TestCase
>>> TestCase.objects.all()
[<TestCase: internet explorer 8 on WIN7 at https://www.google.com/ >, <TestCase: internet explorer 8 on WIN7 at https://www.google.com/ >, <TestCase: internet explorer 8 on WIN7 at https://www.google.com/search?q=mooo >, <TestCase: internet explorer 8 on WIN7 at https://www.google.com/search?q=mooo >, ...]
>>> TestCase.objects.count()
454
詳しくはお気軽にお問い合わせください!