在django视图中按一定顺序保存多对多字段
我在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] 我的问题是
类颜色(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,很好的理解:)我指的是从颜色到汽车的外键(不复制品牌似乎更合理),但是,呃,你明白我的意思:-)顺便说一句,通常型号名称都是单数的。