【发布时间】:2017-03-11 20:15:02
【问题描述】:
我的问题是,我应该如何正确组织我的 Python 数据,以便我可以以一种干净的 Python 方式实现下表格式。所有图像都属于某个版本,因此图像在右栏中很重要(顺序很重要)。有些版本没有所有(或任何)图像,所以在这种情况下,我会检查“image == None”并显示“?”等等,而不是图像。因此,“空”槽也应保存到数据中。
注意:我正在使用 Django 执行此操作,并且我使用 Django 模板来呈现它。理想情况下,我可以在模板中执行以下操作:
<table>
<thead>
<tr>
{% for version in data.versions %}
<th>{{ version }}</th>
{% endfor %}
</tr>
</thead>
<tbody>
{% for image in data.images %}
<tr>
{% for file in image.files %}
{% if file == None %}
<td>No image</td>
{% else %}
<td>{{ file }}</td>
{% endif %}
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
更新:问题实际上是如何在后端正确组织数据。我需要手动初始化要放入数据的版本列表(Version1、Version2 等)并为它们创建列。订购很重要,所以我需要保留它。然后我将搜索具有 X 数量图像的某些对象,这些对象都有特定的版本。然后我需要遍历这些对象(对于对象中的对象)并遍历某个对象的图像(对于 object.images 中的图像),并且我应该将每个图像附加到某个版本的列(添加到“key”所在的列等== image.version)。如果某列没有图像,则值应为“无”等。
我可以用列表列表来实现这个,例如:
data = [
['Version1', 'Version2', etc.],
['image',None, etc.],
['image', 'image', etc.],
etc.
]
但我很确定有更好的方法在 Python 中实现它。因此,非常欢迎任何更好的建议。
更新 2:Django 模型可能如下所示:
class Version(models.Model):
name = models.CharField(max_length=255)
class Image(models.Model):
file = models.ImageField(upload_to='images')
version = models.ForeignKey(Version)
class Object(models.Model):
images = models.ManyToManyField(Image)
【问题讨论】:
-
列表列表有什么问题?
-
@elena 没有错,但在我的情况下,我宁愿数据格式允许我在布局代码中使用“data.versions”、“image.files”等。我只是认为这样更具可读性和可维护性。
标签: python html django data-structures html-table