使用按钮在IntegerField上添加值(Django 1.11)

时间:2018-08-03 08:48:06

标签: django django-models django-forms

models.py

likes = models.IntegerField()

forms.py

class LikeForm(forms.ModelForm):
class Meta:
    model = Post
    fields = ("likes",)

我如何制作一个按钮,每次单击该按钮,就向此IntegerField加1?默认值为0。

我猜我必须使用“提交”按钮,但是我不确定如何在不呈现页面上的表单的情况下完成该操作。

1 个答案:

答案 0 :(得分:0)

在您的views.py中,您可以添加以下内容:

def record_like_view(request, pk):
    if request.method == 'POST':
        post = Post.objects.get(pk=pk)
        post.likes += 1
        post.save()
    ...

然后在您的模板中:

<form method="post">
    {% csrf_token %}
    <a class="btn" href="{% url 'my_app:record_like' post.id %}">Like</a>
</form>

您刚刚发布到URL。即使您仍在模板中使用表单,在这种情况下也不需要LikeForm。看看this Django教程中的另一个示例。

就用户阻止用户多次单击(as pointed out by guillermo)而言,这将需要更复杂一些。