以下のベストプラクティスの実装に関するガイダンスが必要です。Django:投稿データにアクセスして条件と一致させるにはどうすればいいですか
私はアプリを構築しているシナリオを持っていますが、特定の「カテゴリ」や「ロケール」と一致し、それ以外のページにリダイレクトしたい場合は通常のルートになります。ここで
私の簡単なviews.py
if form.is_valid():
...
kwargs = {'project_id':project_id, 'categories':request.POST['categories'], 'locale':request.POST['locale']}
process_se(request, **kwargs)
return HttpResponseRedirect(obj.next_url)
は、ここで私は私のmodels.pyファイルに持っているものですが、非常に矛盾しているようだれます。 このリクエストを処理するより良い方法はありますか?
def process_se(self, request, **kwargs):
if "All" or "Sweden" in kwargs['locale']:
if "Technology" or "Internet" in kwargs['categories']:
next_url = request.build_absolute_uri(reverse('project_new_se', kwargs={'project_id': self.id}))
else:
next_url = request.build_absolute_uri(reverse('project_new_step2', kwargs={'project_id': self.id}))
self.next_url = next_url
UPDATES:
私はforms.ModelForm
、categories
とlocales
を使用しています、私はシェルで、まだのためにシミュレートされているManyToManyField
の はここで何の結果
を取得していないように思われcleaned_data出力されます
f.cleaned_data
{'locale': [<Locale: Sweden>, <Locale: All>], 'categories': [<Category: Technology>, <Category: Internet>]}
これをフィールドi n個の形式は、罰金私はもともとフォームクラスでこのコードを置く提案
- 私は、上記のあなたの助けをいくつかの追加の更新プログラムを追加しました非常に高く評価されています! – ApPeL
ああ、私は見る:ロケールとカテゴリはオブジェクトです。だから、文字列と直接比較することはできません。文字列と*名前*を比較する必要があります。私の更新を参照してください。 –
Legen - WAIT FOR IT - dary!魅力のように働き、少し編集しました。あなたはmanytomanyフィールドに.all()を持っている必要があります。それ以外の場合、エラーが発生し、プロジェクトオブジェクトをビューに渡す必要があります:) – ApPeL