我有以下代码;
# 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)
如何保存多个字段"类别"从旅行到旅行2?
在行中设置了多个到多个字段:
form.save_m2m()
答案 0 :(得分: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
,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
)。