代码之家  ›  专栏  ›  技术社区  ›  Roy Prins

在many to may字段上订购django模型。需要非规范化?

  •  1
  • Roy Prins  · 技术社区  · 14 年前

    • 1: (位置)

    以及以下部分:

    • 墙(FK=1)
    • 屋顶(FK=1)
    • 屋顶(FK=1)
    • 砖(FK=2)
    • 平铺(FK=2)
    • 木材(FK=2)

    要组合这些项: 墙,砖,屋顶,木头,墙,木头

    class Category(models.Model):
        ordering = models.IntegerField()
        desc = models.CharField()
    
    class Part:
        name = models.CharField()
        category = models.ForeignKey(Category)
        class Meta:
            unique_together = ('name', 'category')
            ordering = ['category','name']
    
    class Item:
        parts = ManyToManyField(Part)
        def __unicode__(self):
            return ".".join([p.name for p in self.parts.all()])
    

    现在的问题是:我该如何订购这些商品?我宁愿让他们按组合的名字升序,但不知道如何升序。

    1 回复  |  直到 14 年前
        1
  •  1
  •   Almad    14 年前

    如果我理解正确,则数据库中不存在排序键,因此数据库无法对其进行排序(或者至少是简单地排序,例如使用Django ORM)。

    在这些条件下,是的-非标准化。