在django视图中按一定顺序保存多对多字段

在django视图中按一定顺序保存多对多字段,django,django-models,django-views,Django,Django Models,Django Views,我在django应用程序中有很多型号: 类颜色(models.Model): 颜色=型号.CharField(最大长度=30) 等级车(型号.型号): 品牌=型号.CharField(最大长度=30) Lote类(models.Model): 地址=models.CharField(最大长度=100) 汽车=模型。许多领域(汽车) 颜色=车型。许多车型(汽车) 我正试图用两个pk列表保存一个新的Lote(): colors\u pk=[1,2,3] cars_pk=[3,1,2] 我的问题是

我在django应用程序中有很多型号:

类颜色(models.Model):
颜色=型号.CharField(最大长度=30)
等级车(型号.型号):
品牌=型号.CharField(最大长度=30)
Lote类(models.Model):
地址=models.CharField(最大长度=100)
汽车=模型。许多领域(汽车)
颜色=车型。许多车型(汽车)
我正试图用两个pk列表保存一个新的
Lote()

colors\u pk=[1,2,3]
cars_pk=[3,1,2]
我的问题是:如果我像这样保存
Lote()
实例:

lote=lote(address='Some address')
lote.save()
lote.cars.add(cars\U pk)
lote.color.add(颜色)
颜色和车辆是否会以与列表相同的顺序保存在m2m字段中?因为列表的顺序很重要-
颜色和
车辆通过索引关联,即车辆3链接到颜色1


那么我该怎么做呢?

我会重新设计您的模型,如下所示:

class Color(models.Model):
    color = models.CharField(max_length=30)

class Car(models.Model):
    brand = models.CharField(max_length=30)
    color = models.ManyToManyField(Color)


class Lot(models.Model):
    address = models.CharField(max_length=100)
    cars = models.ManyToManyField(Car)

这使得汽车与Lote和颜色相关,但确保颜色与汽车正确链接

你的意思可能是
ManyToManyField(Colors)
,尽管这个设计也是错误的,谢谢。不过,这种设计有什么错?很难推断OP的具体用例是什么,但这仍然满足了原始设计的需求,而不需要具体的订购,不是吗?我收回这一点,你是对的。我原以为在汽车颜色中添加一个
foreignKey
会更有意义,但现在我意识到这实际上比你的方式更好(因为你只定义了一次颜色)。这只是我下意识的反应,试图避免很多人。所以我给你的分数是+1。另外,不相关的:修复他的语法错误会很好(
Lot
而不是
Lote
address
而不是
address
)谢谢。我对这个问题的最初评论也建议使用
ForeignKey
,但因为我不确定OP到底在问什么,所以决定保留
manytomy
。然而,如果一辆车只有一种颜色,那么一辆车到另一种颜色的ForeignKey仍然可以工作,而不会有重复的颜色条目。我也修复了类/var名称。我没有意识到Lote的本意是Lot,很好的理解:)我指的是从颜色到汽车的外键(不复制品牌似乎更合理),但是,呃,你明白我的意思:-)顺便说一句,通常型号名称都是单数的。