私は Django を初めて使用しますが、特定の議論の余地のあるトピックについて意見を述べることができる Web サイトを構築しています。今のところ、私はそれぞれのディベートにいくつかのステートメントを手動で追加しただけで、ユーザーがステートメントに「投票」できるようにしたいと考えています。
これが私が今持っているコードです:
models.py からのコード
class Debate(models.Model):
title = models.CharField(max_length=50)
description = models.CharField(max_length=100)
pub_date = models.DateTimeField('Date Published')
url_slug = models.SlugField(editable=False)
def __unicode__(self):
return self.title
class Statement(models.Model):
statement = models.CharField(max_length=200)
debate = models.ForeignKey(Debate)
votes = models.IntegerField(default=0)
user = models.ForeignKey(User)
def __unicode__(self):
return self.statement
views.py からのコード
def debate_page(request, url_slug):
if request.method == 'POST':
for statement in statements:
statement.votes = statement.votes+1
debate = Debate.objects.get(url_slug=url_slug)
template = get_template('debate_page.html')
statements = Statement.objects.filter(debate=debate)
variables = Context ({
'debate_title': debate.title,
'debate_description': debate.description,
'statements': statements,
})
output = template.render(variables)
return HttpResponse(output)
テンプレートからのコード
{% extends "base.html" %}
{% block title %}{{ debate_title }}{% endblock %}
{% block head %}{{ debate_title }}{% endblock %}
{% block description %}{{ debate_description }}{% endblock %}
{% block content %}
{% for statement in statements %}
<li>{{ statement }} - {{ statement.votes }}
<input type="checkbox" name="statement" value="{{ statement.id }}" /></li><br />
{% endfor %}
<input type="submit" value="Submit" />
{% endblock %}
私が望むのは、訪問者が同意するステートメントの横にあるチェックボックスをオンにしてから、送信ボタンをクリックすることです。これを行うと、ステートメントの投票属性が 1 増加します。ユーザー入力を取得してデータベースに変更を加える方法がわかりません。
ありがとう!