0

Python がオブジェクトに使用する用語がわかりません。Python のノウハウが不足していることをお許しください。

効果的に、どうすればこれを行うことができますか:

strToObject = {'story':Story,'post':Post}

def post(self,request):
    type = request.POST['theTypeInTheForm']
    id = request.POST['idInTheForm']
    get_object_or_404(strToObject.get(type,None),id)

これは、フォームフィールドから値を取得し、どのタイプについて話しているかを判断し、id から適切なタイプをデータベースから取得することです。

私はこれを行う方法がよくわかりません。(フォームは実際には評価ボタン用であるため、その背後にフォーム全体はありません!)

4

2 に答える 2

2

おそらく、アプリで定義されているすべての異なるモデルを含むモデルであるContentTypesを使用することをお勧めします。

于 2012-06-14T19:15:11.330 に答える
1

まず、 からモデルを取得する際には、より注意する必要がありますstrToObject。現状では、type「ストーリー」または「投稿」のいずれでもない場合、モデルとしてget_object_or_404フィードさNoneれ、コードが爆発します。代わりに次のようにします。

model = strToObject.get(type) # `None` is the "default" default
if model is not None:
    get_object_or_404(model, id=id)

次に、上記のコードで示したように、 をそのまま に渡すだけではなくidget_object_or_404モデルのどのフィールドで値を検索するかを指定する必要があるため、id=id.

3 番目に、 とを取得するためにgetonを使用する必要があります。現在のように、何らかの理由でフォームに含まれていない場合、コードは次のように爆発します。request.POSTtypeidIndexError

type = request.POST.get('theTypeInTheForm')
id = request.POST.get('idInTheForm')

次に、None続行する前に値がそうでないことを確認する必要があります。

if type is not None and id is not None:
    # the rest of your code
于 2012-06-14T19:22:59.003 に答える