3

N 個の (不明な) user_id を送信するフォームを (POST で) 送信したいと考えています。これらの ID をリストとして受け取るビューを作成できますか?

例えば

def getids(request,list):

   for id in list:
       usr = User.objects.get(pk=id);
       //do something with it.
       usr.save()

for id in request.POST['id']:

可能ですか?

受け入れられる最善の方法を探しています。

4

5 に答える 5

5

QueryDict オブジェクトについて読む必要があります。

>>> q = QueryDict('a=1&a=2&a=3')
>>> q.lists()
[('a', ['1', '2', '3'])]
于 2009-09-26T23:02:33.220 に答える
2

1ページに多数の同一のフォームを送信する場合は、フォームセットが必要なものであることがわかる場合があります

次に、ユーザーID用に1つのフォームを作成し、それをフォームセットで繰り返すことができます。次に、フォームセットを繰り返し処理して結果を読み取ることができます。

于 2009-09-27T09:06:51.270 に答える
2

とても近い。POST パラメータは、実際にはリクエストのQueryDict オブジェクトに含まれています。

def getids(request):
    if request.method == 'POST':
        for field in HttpRequest.POST:
            // Logic here
于 2009-09-26T23:03:37.913 に答える
0

QueryDictgetlistはあなたが探しているものです。

ドキュメントから:

>>> q = QueryDict('a=1', mutable=True)
>>> q.update({'a': '2'})
>>> q.getlist('a')
['1', '2']
于 2015-11-02T21:34:42.390 に答える
0

後でフィルタリングできるプレフィックスを使用してフォーム フィールドを作成できます。

uid-1、uid-2、... uid-n のような名前のフォーム フィールドを使用するとします。

次に、POST を処理するときに次のことができます。

uids = [POST[x] for x in POST.keys() if x[:3] == 'uid']

これにより、リスト内の「uid」で始まる POST 内のフィールドの値が得られます。

于 2009-09-29T18:57:57.433 に答える