从一个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
,p2
和p3
有关。保存表单时,此步骤已完成。
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
)。