2014-12-06 85 views
0

我有以下代碼;從一個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() 

回答

0

真的,我們需要看到你的模型是什麼樣子,以給定一個合適的回答,但這應該幫助你解決事情。讓我們使用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)。

相關問題