2017-08-02 8 views
0

私は現在、私のユーザーから記入しています。そこから、サイト管理者はフォームを承認または却下する必要があります。これらのエントリをすばやく承認または却下したいと思います。ここでは、ユーザがそれを提出し、関連するmodels.pyクエリーセットを更新して同じページに留まる

class MyModel(models.Model): 
    STATUS_CHOICES = (
     ('Submitted', 'Submitted'), 
     ('Approved', 'Approved'), 
     ('Declined', 'Declined'), 
    ) 

    user= models.ForeignKey(UserProfile) 
    status = models.CharField(max_length=55, choices=STATUS_CHOICES, default='Submitted') 

したら、私はMyModel.statusが提出されたすべてのインスタンスを一覧表示ビューを持っています。私が何をしたいか

# views.py 
@staff_member_required 
def approve(request, id): 
    MyModel.objects.filter(id=id).update(status="Approved") 

#urls.py 
url(r'^review/approve/(?P<id>[\w\-]+)/$', views.approve), 

は、私は、フォームを承認し、受け入れられたオブジェクトが消えてい、とすることにクリックできるボタンがあります:ここでviews.py

@staff_member_required 
def review(request): 
    pending = MyModel.objects.filter(status="Submitted") 

最後に私が承認する見解を持っているということです受け入れるためにボタンをクリックしてから、ページをリフレッシュして、次のページのために同じことをする必要はありません。どのように私はこれを達成することができますか?

+0

テンプレートの3つのボタンを作る - >クリックすると間違ったものをクリックしていないことを確認する 'alert()' - 最終的なボタンがクリックされた '警告'の中で - > Ajax呼び出しを送る。リロードする必要はありません! ユーザーが投稿したコンテンツを表示するには、単純な「コンテンツ」ボタンを実行します。クリックすると、データが入ったモーダルが開きます。 Ajaxでも実行できます(送信されたデータの量によります) – hansTheFranz

答えて

0

hansTheFranzで提案されているように、ページをリロードしないようにするには、モデルを更新するajax関数を記述してください。さらに、管理ページのすべてのフォームをロードするためのアドバイスは、最初のものを除くすべてを非表示にして、現在のものを非表示にして次を表示するajax succeed関数を使用して非表示にします(https://docs.djangoproject.com/fr/1.11/topics/forms/formsets/を参照してください)。

PS:CSRFトークンをあなたのビューに送るのを忘れないでください.Djangoでajaxを使用するときに問題になることがよくあります。

関連する問題