Django更改外键数据并保存

编程入门 行业动态 更新时间:2024-10-27 12:34:03
本文介绍了Django更改外键数据并保存的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我有两种型号

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更改外键数据并保存

本文发布于:2023-10-14 21:36:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1492280.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:并保存   数据   Django

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!