gpt4 book ai didi

django - Django-如何从用户输入中增加整数字段?

转载 作者:行者123 更新时间:2023-12-03 11:34:06 24 4
gpt4 key购买 nike

我是Django的新手,但是我正在建立一个网站,人们可以在该网站上就某些有争议的话题发表意见。现在,我只是为每次辩论手动添加了一些声明,我希望用户能够对声明进行“投票”。

这是我现在拥有的代码:

来自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 %}

因此,我希望访问者在其同意的声明旁边选中一个框,然后单击“提交”按钮。这样做会使该语句的votes属性增加1。我只是不知道如何获取用户输入并更改数据库。

谢谢!

最佳答案

可以使用F expressions进一步简化kyiphyu的代码:

from django.db.models import F

Statement.objects.filter(id__in=statements).update(vote=F('vote') + 1)

关于django - Django-如何从用户输入中增加整数字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16431822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com