【发布时间】:2016-04-05 09:22:30
【问题描述】:
我有两个类似的模型
class Reporter(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
email = models.EmailField()
class Article(models.Model):
headline = models.CharField(max_length=100)
pub_date = models.DateField()
reporter = models.ForeignKey(Reporter, on_delete=models.CASCADE)
现在让我们说一下文章的对象
a=Article.objects.filter(id=1)
a=a[0]
我尝试更改撰写本文的作者的标题和电子邮件,所以我这样做了
a.heagline = "Saving foreign key does not work"
a.reporter.email = "changed@email.com"
a.save()
这会保存 Article 对象,但不会修改 Reporter。
我明确地必须这样做
a.reporter.save()
查看报告对象的更改。由于这是一个多对一关系,它还应该在保存时修改外键
我怎样才能通过调用childs save方法来保存父模型
【问题讨论】:
-
我怎样才能通过调用childs保存方法来保存父模型
-
没有直接的方法,但您始终可以覆盖子模型的
save方法。 -
您可能可以覆盖孩子的保存方法来执行此操作,但这很浪费,并且可能会在某些时候给您带来问题。 为什么你想这样做?
-
为什么你能做到这一点?如果您正在修改链接对象,您应该在该对象上执行
save- 修改“从后台”似乎是非常非常的坏主意,并且将来您可能无法找出为什么您的对象是正在修改
标签: django orm foreign-key-relationship many-to-one