Python 在多对多字段上订购django模型。需要非规范化吗?

Python 在多对多字段上订购django模型。需要非规范化吗?,python,django,Python,Django,我有一个系统,用于从某些类别的零件中组合项目 例如,以以下类别为例: 1:(地点) 2:(材料) 以及以下部分: 墙(FK=1) 屋顶(FK=1) 屋顶(FK=1) 砖(FK=2) 瓷砖(FK=2) 木材(FK=2) 要组成这些项目: 墙。砖,屋顶。木头,墙。木头 class Category(models.Model): ordering = models.IntegerField() desc = models.CharField() class Part:

我有一个系统,用于从某些类别的零件中组合项目

例如,以以下类别为例:

  • 1:(地点)
  • 2:(材料)
以及以下部分:

  • 墙(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()])
现在的问题是:我如何订购这些商品?我更喜欢按组成的名称排列,但不知道如何排列


一种方法是为名称添加一个额外的字段,该字段在save()方法中得到更新。这将意味着对模型进行非规范化…

如果我理解正确,数据库中不存在排序键,所以数据库无法对其进行排序(或者至少是很小的排序,比如使用Django ORM)

在这些条件下,是-反规范化


这不丢脸。如前所述,规范化的数据集是针对sissies的…

若我理解正确,那个么数据库中不存在排序键,所以数据库无法对其进行排序(或者至少是很小的排序,比如使用Django-ORM)

在这些条件下,是-反规范化


这不丢脸。如前所述,规范化数据集是为娘娘腔设计的…

好吧,去规范化让我感觉自己像个娘娘腔。我想这是有道理的。需要在保存()时更新name_denormed字段,不仅针对项目,还针对零件甚至类别,以保护完整性。是。从清晰的角度来看,这有点糟糕,但我会在这里坚持下去……denorm是生活的事实;)嗯,去规范化让我觉得自己像个娘娘腔。我想这是有道理的。需要在保存()时更新name_denormed字段,不仅针对项目,还针对零件甚至类别,以保护完整性。是。从清晰的角度来看,这有点糟糕,但我会在这里坚持下去……denorm是生活的事实;)