models.py
likes = models.IntegerField()
forms.py
class LikeForm(forms.ModelForm):
class Meta:
model = Post
fields = ("likes",)
我如何制作一个按钮,每次单击该按钮,就向此IntegerField加1?默认值为0。
我猜我必须使用“提交”按钮,但是我不确定如何在不呈现页面上的表单的情况下完成该操作。
答案 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)而言,这将需要更复杂一些。