从一个django模型到另一个django模型可以节省多个到多个字段

时间:2014-12-06 18:49:05

标签: 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)

如何保存多个字段"类别"从旅行到旅行2?

在行中设置了多个到多个字段:

form.save_m2m()

1 个答案:

答案 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现已与p1p2p3相关联。保存表单时,此步骤已完成。

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)。