按照特定顺序在django视图中保存多个到多个字段

时间:2014-09-24 19:21:09

标签: django django-models django-views

我在django app中有一个ManyToMany模型:

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

class Cars(models.Model):
    brand = models.CharField(max_length=30)

class Lote(models.Model):
    adress = models.CharField(max_length=100)
    cars = models.ManyToManyField(Cars)
    color = models.ManyToManyField(Cars)

我尝试使用两个pk列表保存新的Lote()

colors_pk = [1,2,3]
cars_pk = [3,1,2]

我的问题是:如果我保存Lote()这样的实例:

lote = Lote(adress='Some address')
lote.save()
lote.cars.add(cars_pk)
lote.color.add(colors_pk)

将颜色和汽车以与列表相同的顺序保存在m2m字段中吗?因为列表的顺序很重要 - colors_pkcars_pk与索引相关,即汽车3与颜色1相关联。

那我该怎么做呢?

1 个答案:

答案 0 :(得分: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和颜色相关联,但确保颜色与汽车正确链接。