2017-02-02 59 views
0

我想使用Django Doc上使用的投票示例製作圖表。我的問題是我想對每個問題都這樣做。到目前爲止,我可以用一個問題展示餅圖,但我意識到我正在使用一個問題。選項和選擇的ID。但是如果我想使用一個問題,我不能將我們的id作爲我的論點,因爲它會得到question.id,而不是choice.id。我清楚地解釋並不容易。Chartit模塊如何獲取外鍵

這裏是我的代碼

def vote_results(request): 
    #datapool with the data we want to retrieve 
    votedata = DataPool(series=[{'options': { 
     'source': Choice.objects.all()}, 
     'terms': [ 
     'id', 
     'votes']} 
     ]) 

    #Create chart object 
    cht = Chart(
     datasource=votedata, 
     series_options = 
     [{'options':{ 
     'type': 'pie', 
     'stacking': False}, 
     'terms':{ 
     'id': [ 
     'votes'] 
     }}], 
     chart_options = 
      {'title': { 
       'text': 'What team will win NBA champ?' }}, 
     x_sortf_mapf_mts = (None, monthname, False)) 
    #Send the chart object to the template 
    return render_to_response('polls/votes.html', {'votesdata': cht}) 

我的問題是我怎麼使用Question.objects.all()來獲取的問題,而且還使用了選擇每個問題,這樣當用戶投票對於一個問題,他可以看到這個問題的選擇結果?如果我現在這樣做,我會顯示所有問題的所有選擇。

你看到我想問什麼嗎?

回答

0

我真的不明白你想做什麼,但我會盡力幫忙。因此,我們有兩種型號:

class Question(models.Model): 
    question_text = models.CharField(max_length=200) 
    pub_date = models.DateTimeField('date published') 


class Choice(models.Model): 
    question = models.ForeignKey(Question, on_delete=models.CASCADE) 
    choice_text = models.CharField(max_length=200) 
    votes = models.IntegerField(default=0) 

,如果你想用它選擇的所有問題,你必須做出這樣的請求:

questions = Qustions.objects.all() 

然後在模板應該是這個樣子:

{% for question in questions %} 
    <p>{{question.question_text}}</p> 
    {% for choice in qustion.choice_set.all %} 
     {{choiceschoice_text}} 
    {% endfor%} 
{% endfor %} 

希望它可以幫助你

+0

我能理解,但如果你看這個部分votedata =數據池(系列= [{ '選項':{ '源':Choice.objects.all()}, '術語':[ 'ID', '投票']} ]) 我想創建使用來自一個問題的信息的餅圖,和選擇的結果。 DataPool具有這些信息,所以我不必使用forloop在我的模板中打開。 –