2013-08-30 74 views
0

我想在我的模型中迭代我的FK,以便通過各種表顯示所有連接。我的模板呈現,但不顯示任何值。有任何想法嗎?迭代通過外鍵時,模板無法正確呈現

models.py

class State(models.Model): 
    state = models.CharField(max_length=255) 
    relevantdisease = models.ForeignKey(Disease) 
    relevantoption = models.ManyToManyField(Option, through='StateOption') 

class StateOption(models.Model): 
    partstate = models.ForeignKey(State) 
    partoption = models.ForeignKey(Option) 
    relevantoutcome = models.ManyToManyField(Outcome, through='StateOptionOutcome') 

class StateOptionOutcome(models.Model): 
    stateoption = models.ForeignKey(StateOption) 
    relevantoutcome = models.ForeignKey(Outcome) 
    outcomevalue = models.CharField(max_length=20) 

views.py

def stateall(request, disease_id): 

    disease = get_object_or_404(Disease, pk=disease_id) 
    states = State.objects.select_related().filter(relevantdisease=disease_id) 

    context = {'disease':disease,'states': states} 
    return render(request, "stateall.html", context) 

template.html

{% for state in states %} 
    <li>{% for i in state.stateoption_set.all %}</li> 
     <li>{% for j in i.stateoptionoutcome_set.all %}</li> 
     {% endfor %} 
    {% endfor %} 
{% endfor %} 

我想模板顯示爲:

State1<state> 
    <li>partoption</li> 
     <li>relevantoutcome: outcomevalue</li> 

State2<state> 
    <li>partoption</li> 
     <li>relevantoutcome: outcomevalue</li> 

... 

回答

2

您的模板從不輸出任何內容。

您可能誤解了{% for %}模板標籤的使用。

此:

​​

輸出<li>幾次。

但這:

{% for j in i.stateoptionoutcome_set.all %} 
    <li>{{ j.relevantoutcome }}: {{ j.outcomevalue }}</li> 
{% endfor %} 

將輸出在i.stateoptionoutcome_set.all發現每StateOptionOutcome線。