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)

ビュー.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>

...
4

1 に答える 1

2

テンプレートは何も出力しません。

{% for %}template タグの使い方を誤解している可能性があります。

これ:

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

<li>数回出力します。

でもこれは:

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

StateOptionOutcomeで見つかった行ごとに出力しi.stateoptionoutcome_set.allます。

于 2013-08-31T00:08:40.490 に答える