代码之家  ›  专栏  ›  技术社区  ›  chefsmart

在Django模板中处理表示逻辑

  •  2
  • chefsmart  · 技术社区  · 15 年前

    假设我们有以下模型:-

    class Item(models.Model):
        name = models.CharField(max_length=150)
        value = models.DecimalField(max_digits=12,decimal_places=2)
    
    class Person(models.Model):
        name = models.CharField(max_length=150)
        items = models.ManyToManyField(Item, through='AssignedItem')
    
    class AssignedItem(models.Model):
        person = models.ForeignKey(Person)
        item = models.ForeignKey(Item)
        value = models.DecimalField(max_digits=12,decimal_places=2)
    

    因此,基本上可以为一个人分配零个、一个或多个项,并且可以通过在 through

    我们的目标是实现一个html表 全部的 Item.name 作为其标题行,在该标题行中有一个额外的列 Person.name

    每个 Person 可能有一套不同的 Person.items 尚未分配 Item ,对应的单元格 见附图

    alt text

    问题是如何在相应的列中放置正确的AssignedItem值。我们有一个Queryset项,我们在模板中循环这些项来创建标题行,然后我们有一个包含每个人的项的列表。但是,我们如何确保在相应的项目标题下显示正确的AssignedItem?

    2 回复  |  直到 15 年前
        1
  •  0
  •   zsquare lance    15 年前

    你提到你正在构建视图中的列表,

    我们有一组物品 在模板中循环到 创建标题行,然后 个人物品。

    构造此列表时,请将该列表设置为有序列表,如果存在特定值,请将其分配给该列表,如果不存在,则不插入任何值。 杰克的名单应该是 [78, 45, None, 94, 72]

    因为重新排序是一个问题,所以使用一个以项为索引的字典 {'Item1':78, 'Item2':45, 'Item4':94, 'Item5':72}

        2
  •  0
  •   chefsmart    15 年前

    主要的问题是确保 AssignedItem Item 标题。

    推荐文章