我有两种型号
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)现在让Article的对象说
Now for an object of Article lets say
a=Article.objects.filter(id=1) a=a[0]我尝试更改写这篇文章的作者的标题和电子邮件,所以我这样做
I try to change the headline and the email of the author who has written this article so I do
a.heagline = "Saving foreign key does not work" a.reporter.email = "changed@email" a.save()这将保存Article对象,但不会修改Reporter.
This saves the Article object but does not modify the Reporter.
我明确必须要做
a.reporter.save()查看对报告对象的更改.由于这是多对一关系,因此还应在保存时修改外键
to see the changes to the reporter object. As this is a Many to One relation it should also modify the Foreign key on saving
如何仅通过调用子级的save方法来保存父级模型
How can I save the parent Model too by just calling the childs save method
推荐答案您可以覆盖save方法或仅创建自定义方法.
You could override the save method or just create a custom method.
class Article(models.Model): ... # Overriding save def save(self, *args, **kwargs): self.reporter.save() super(Article, self).save(*args, **kwargs) # Creating a custom method def save_related(self): self.reporter.save() self.save()我建议您创建一个自定义方法,因为它不会在save()
I suggest you create a custom method because it doesn't introduce unexpected behavior in save()
更多推荐
Django更改外键数据并保存
发布评论