私はいくつかのデータベーステーブルを外部キーでリンクしています(基本的な例をここで許してください、私は今、開発envのコピー/貼り付けに問題があります) 。リンクされたデータベースの結果を単一のHTMLテーブルに表示
# models.py
class Task(models.Model):
details = models.ForeignKey(Details)
task = models.CharField(max_length=1024, null=false)
class Activity(models.Model):
task = models.ForeignKey(Task)
activity = models.CharField(max_length=1024)
class Resources(models.Model):
activity = models.ForeignKey(Activity, null=false)
resources = models.CharField (max_length=1024)
これらの結果を1つのテーブルに表示する必要があります。 Activity1
- リソース1
- リソース2
- タスク1
- :タスクは何の活動を持つことができないことに注意してくださいとアクティビティはたとえばなど、すべてのリソースを持っていない可能性があります
- アクティビティ2
- Task2の
- ...等...私は多分に存在し得るすべてのフィールドが含まれている私のforms.pyでテーブルを作成しているこれまでのところ
データベース結果。だから、:
# forms.py
class ViewTable(tables.Table):
task = tables.Column(default=' ')
activity = tables.Column(default=' ')
resource = tables.Column(default=' ')
私は、正しい順序で一緒に結果をリンクして、テンプレートにそれらをレンダリングするitertools.chain
を使用していました。私はここで行き止まりで午前:
# views.py
table = None
for task in tasks:
if table:
table = list(chain(table, task)
else:
table = task
for activity in Activities.objects.filter(tasks=task):
table = list(chain(table, activity))
for resource in Resources.objects.filter(activity=activity):
table = list(chain(table, resource))
return render(request, 'table.html', {'table', table, })
# table.html
<table>
<tr>
<th>Tasks</th>
<th>Activity</th>
<th>Resources</th>
</tr>
{% for item in table %}
<tr>
<th>{{ item.task }}</th>
<th>{{ item.activity }}</th>
<th>{{ item.resource }}</th>
</tr>
{% endfor %}
</table>
私は1つのタスクのみ(無活動またはリソース)を持っている場合、これが原因で動作しません。そのオブジェクトは、反復可能ではないので、ときに私、私はエラーを取得しますそれをテンプレートでレンダリングしてみてください。
しかし全体として、私はこれがやや遅いやり方であると感じています。私はより良い方法を考え出すのに問題があります。修正や完全に代替の推奨事項は大歓迎です!私は、オブジェクトを反復処理し、リストにそれらの項目のそれぞれを加えることができることを認識していなかった
Tasks Activities Resources ------------------------------------- task1 activity1 resource1 resource2 activity2 task2
この場合にdjango-tables2を使用する理由がわかりません。また、コードを表示する際にdjango-tables2をまったく使用しないようです。 それ以外では、何かが反復可能でないというエラーが発生した場合、それを反復しようとする前にチェックする必要があります。 – Jieter
あなたが正しいです、私は 'tables.Table'が' django-tables2'の一部であることに気付きませんでした。その部分は必要ありません。私の質問は、私が「総合的な目標」に掲示したようなものを考え出すことでした。そのオブジェクトが(私が持っているコードを修正する)反復可能であるか、まったく異なる解決策であれ、私はすべての耳です。 –
ええ、あなたの例を見ると、複数の構文エラーがあります( 'false'と' False'、括弧がありません)。完全なdjangoプロジェクトを提供する必要はありませんが、コードは構文エラーなしで実行する必要があります。ビューは完了する必要があります。外部依存関係のないモデルを作成することができます... – Jieter