从一个django模型到另一个节省一个多对多的字段

问题描述:

我有以下代码;从一个django模型到另一个节省一个多对多的字段

# check whether it's valid: 
if form.is_valid(): 
    travel = form.save(commit=False) 
    travel.user = request.user 
    travel.save() 
    form.save_m2m() 


    travel_2 = Travel() 
    travel_2.from_city = travel.to_city 
    travel_2.to_city = travel.from_city 
    travel_2.from_when = travel.to_when 
    travel_2.commission = travel.commission 
    travel_2.user = travel.user 
    travel_3 = travel_2.save() 

,基本上可以节省一个旅行对象,然后将该对象旅行到另一个旅游对象副本(travel_2)

我怎么保存多对多场“类别”,从旅游到travel_2?

很多很多场在该行被设置:

form.save_m2m() 

真的,我们需要看到你的模型是什么样子,以给定一个合适的回答,但这应该帮助你解决事情。让我们使用Django docs中定义的类。

class Publication(models.Model): 
    title = models.CharField(max_length=30) 

class Article(models.Model): 
    headline = models.CharField(max_length=100) 
    publications = models.ManyToManyField(Publication) 

然后在Django shell中我们可以创建一些模型实例。

p1 = Publication(title='The Python Journal') 
p1.save() 
p2 = Publication(title='Science News') 
p2.save() 
p3 = Publication(title='Science Weekly') 
p3.save() 
a1 = Article(headline='Django lets you build Web apps easily') 
a1.save() 
a2 = Article(headline='Django lets you build Web apps easily part 2') 
a2.save() 

最后在本文中添加一些出版物。 a1现在与p1,p2p3有关。保存表单时,此步骤已完成。

a1.publications.add(p1, p2) 
a1.publications.add(p3) 
a1.save() 

如果我们想给一篇文章所有的出版物,另一篇文章有​​。

a2.publications = a1.publications.all() 
a2.save() 

或者,如果我们要复制的article_set那就是p1属性。

p2.article_set = p1.article_set.all() 
p2.save() 

这两个方法,你需要取决于您的旅行对象是否具有M2M关系(如Article),或者是否具有反向关系,M2M(如Publication)。