NBAプレーヤーの統計を(学習プロジェクトとして)集約する私のDjangoプロジェクトでは、名前または姓(あるいはその両方)でプレーヤーを検索できるシンプルな検索ビューを構築しました。開発サーバーでは完全に正常に機能しますが、Google App Engineを使用してサイトをデプロイしたいのですが、GAEの高レプリケーションデータストアが原因であると思われるエラーが発生します。
Django-nonrel / dbindexerツールがこの問題を軽減するのに役立つという印象を受けましたが、これまでのところ、それらを無駄に実装しようとしました-自分のサイトで検索しようとすると、次のメッセージを含むエラーログが表示されます:'DatabaseError:このクエリはデータベースでサポートされていません。'
私の問題は、これらのツールの説明が開発のさまざまな時点で作成された複数のドキュメントに分散していることだと思います。そのため、それらを1つのまとまりのある画像にまとめるのは難しいです。また、私は彼らが提供するtestappを調べましたが、それは彼らの指示が示唆するものとは多少異なって設定されているようです。だから私は2つの質問をしたいと思います:
1)私がコーディングしたビューはGAEとDjango-nonrel / dbindexerで使用することもできますか?ここにあります:
def search(request):
query = request.GET.get('q','')
querywords = query.split(' ')
lname=''
for word in querywords[1:-1]:
lname += word+' '
lname += querywords[-1]
if query:
if len(querywords)>1:
qset = (
Q(first_name__iexact=querywords[0]) &
Q(last_name__iexact=lname)
)
exact_results = Player.objects.filter(qset).distinct()
if exact_results != []:
result = exact_results
qset = (
Q(first_name__icontains=querywords[0])|
Q(last_name__icontains=querywords[0])|
Q(first_name__icontains=lname)|
Q(last_name__icontains=lname)
)
results = Player.objects.filter(qset).distinct()
results = results.order_by('last_name','first_name')
else:
qset = (
Q(first_name__icontains=querywords[0]) &
Q(last_name__icontains=lname)|
Q(first_name__icontains=querywords[0])|
Q(last_name__icontains=querywords[0])
)
results = Player.objects.filter(qset).distinct()
results = results.order_by('last_name','first_name')
result = ''
else:
qset = (
Q(first_name__icontains=querywords[0])|
Q(last_name__icontains=querywords[0])
)
results = Player.objects.filter(qset).distinct()
results = results.order_by('last_name','first_name')
result = ''
else:
results = []
result = ''
return render(request,'search.html', {
'result':result,
'results': results,
'query': query,
'querywords':querywords
})
2)使用可能であり、dev内のプロジェクトが次のように構成されている場合、GAEで検索ビューを正しく機能させるために実行できる最も簡単な一連の手順は何ですか?
NBA/
__init__.py
manage.py
settings.py
urls.py
templates/
(html files)
players/
__init__.py
admin.py
models.py
tests.py
views.py
fixtures/
(some .yaml fixture files)
static/
(css, js, and gif files)