Sono nuovo di Django, ma sto costruendo un sito Web in cui le persone possono rilasciare dichiarazioni su alcuni argomenti discutibili. In questo momento ho appena aggiunto manualmente alcune dichiarazioni per ciascun dibattito e vorrei che gli utenti avessero la possibilità di "votare" su una dichiarazione.Django - Come incrementare il campo intero dall'input dell'utente?
Ecco il codice che ho adesso:
Codice da 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
Codice da 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)
Codice da modello
{% 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 %}
Così quello che mi piacerebbe è per un visitatore di selezionare una casella accanto alla dichiarazione con cui sono d'accordo e quindi fare clic sul pulsante di invio. Fare ciò aumenterebbe l'attributo voti per la dichiarazione di 1. Non riesco proprio a capire come ottenere input da parte dell'utente e apportare una modifica al database.
Grazie!
https://docs.djangoproject.com/en/dev/ref/request-response/ l'oggetto di richiesta di Django detiene i dati post in un oggetto simile a un dizionario. Lo useresti per ottenere i dati del post. L'incremento si otterrebbe importando il modello appropriato e aumentando il numero dei voti di 1 – jsvk
Mi dispiace, ma sono nuovo di Django e anche se la tua risposta potrebbe essere utile ad alcuni, non capisco come fare ciò che disse. – emagdnim