0

私のコードでは、ユーザーに 2 つのリンク (bool を false または true にする) を送信して、注文を確認するか拒否するかを尋ねるメールを送信します。唯一の問題は、true、false、true、false の順にクリックして bool を継続的に変更できることです。true リンクをクリックすると、戻って false にできないようにしたいと思います。

views.py のコードは次のとおりです。

def confirm(request, itemnum):
        item = get_object_or_404(PurchaseOrder, item_number = itemnum)
        item.confirmed = True
        item.save()
        confirm_title = 'Purchase Order %s Confirmed' % item.product
        send_mail(confirm_title, 'Check the Product Order System to see the updated list.', 'MyEmail@gmail.com',['YourEmail@gmail.com'], fail_silently=False)
        return HttpResponse('Product  %s  confirmed' % item.product )

def deny(request, itemnum):
        item = get_object_or_404 (PurchaseOrder, item_number = itemnum)
        item.confirmed = False
        item.save()
        deny_title = 'Purchase Order %s Denied' % item.product
        send_mail(deny_title, 'Check the Product Order System to see the updated list.', 'MyEmail.com', ['YourEmail@gmail.com'], fail_silently = False)
        return HttpResponse('Product  %s denied' % item.product)
4

2 に答える 2

1

ピーターの答えに代わるものは、2 つのブール値フィールドを持つことです。1 つ目は現在扱っているもので、2 つ目はHasResponded. 次に、ユーザーがリンクをクリックすると、ビューは次のことを行います。

if instance.HasResponded:
    return render(request, 'already-responded.html',)
else:
    instance.HasResponded = True;
    instance.Bool = response
    instance.save()
    return render(request, 'template.html',)

選択肢を与えるためだけに。

于 2013-08-06T18:26:38.760 に答える
1

を使用してこれを処理し、確認または拒否する前NullBooleanFieldに値を初期化し、確認ビューと拒否ビューで非値を検出し、ステータスを変更しようとしたときに必要な応答を提供します。ステータスによっては「商品%sは確認済みです」などのページを返すと思いますが、もちろん状況次第です。NoneNone

他の解決策も確かに可能です。さらに複雑になることが予想される場合は、ステータス モデルへの外部キーを使用することをお勧めします。

于 2013-08-06T18:22:32.827 に答える