Я пытаюсь построить таблицу с Django, которая:
- Использует отношение «многие ко многим» между строками и столбцами.
- допускает заготовки.
- Расширяемый.
- Хранит значение, которое может быть получено с именем строки и столбца. Я пытаюсь использовать промежуточную модель для этого (не уверен, что это лучший способ).
Я застреваю, ссылаясь на значения. В моей HTML-таблице должны быть перечислены все возможные строки и столбцы, и я не думаю, что смогу сделать это, зациклив значения таблицы, поскольку некоторые из них могут не существовать.
Вот пример того, что я пытаюсь сделать ...
models.py
from django.db import models
class Row(model.Models):
name = models.CharField(max_length=8)
class Col(model.Models):
rows = ManyToManyField(Row, through='Table')
name = models.CharField(max_length=8)
class Table(model.Models):
row = ForeignKey(Row)
col = ForeignKey(Col)
value = models.FloatField()
Вид:
views.py
from django.shortcuts import *
from test.app.models import *
def table(request):
rows = Row.objects.all()
cols = Col.objects.all()
values = Table.objects.all()
return render_to_response(
'app/table.html',
{'row_list': rows, 'col_list': cols, 'value_list': values}
)
HTML-код (застрять при попытке получить доступ к значениям):
table.html
{% extends "base.html" %}
{% block content %}
<h2>My Table</h2>
<ul>
<TABLE border=4 bgcolor=lightgray align=center>
<TR>
<TD align=center bgcolor=darkgray><strong></strong></TD>
{% for col in col_list %}
<TD align=center bgcolor=darkgray><strong>{{ col.name }}</strong></TD>
{% endfor %}
</TR>
{% for row in row_list %}
<TR>
<TD align=center bgcolor=darkgray><strong>{{ col.name }}</strong></TD>
{% for col in col_list %}
{% if row in col.rows.all %}
<!-- How can I access the table values here? -->
<TD align=left><input type="text" name="value" value="???" id="id_{{ col.id }}_{{ row.id }}" /></TD>
{% else %}
<TD align=left><input type="text" name="value" value="" id="{{col.id}}_{{row.id}}" /></TD>
{% endif %}
{% endfor %}
</TR>
{% endfor %}
</ul>
{% endblock %}
В конечном итоге я хочу сделать ее формой, которая будет обновлять значения, но сейчас мне просто нужно, чтобы мой HTML-код работал. Любая помощь будет оценена.