更新Queryset并保持同一页面

时间:2017-08-02 15:29:36

标签: django django-views

我目前有一个来自我的用户填写。从那里,网站管理员必须批准或拒绝表单。我想快速批准或拒绝这些条目。以下是相关的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 review(request):
    pending = MyModel.objects.filter(status="Submitted")

最后,我有一个认可的观点:

# 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),

我想要做的是有一个按钮我可以点击批准表单并让接受的对象消失,而不是必须单击按钮接受,然后刷新页面并为下一个做同样的事情一。关于如何实现这一目标的任何想法?

1 个答案:

答案 0 :(得分:0)

正如hansTheFranz所建议的,如果你想阻止页面重新加载,只需编写一个更新模型的ajax函数。另外,我建议在管理页面中加载所有表单(请参阅https://docs.djangoproject.com/fr/1.11/topics/forms/formsets/批量生成而不是逐个生成),将它们全部隐藏起来除了第一个并使用ajax success函数隐藏当前的表单并显示以下。

PS:不要忘记将CSRF令牌发送到您的视图,在与Django一起使用ajax时,它常常是一个麻烦的来源。