当前位置: 首页 > 面试题库 >

在Django模型的自定义save()方法中,应该如何识别新对象?

姬正文
2023-03-14
问题内容

保存新记录(不更新现有记录)时,我想在Django模型对象的save()方法中触发特殊操作。

(self.id!= None)的检查是否必要且足以确保自我记录是新记录且不会被更新?有什么特殊情况可能会忽略吗?


问题答案:

澄清了self._state不是私有实例变量,而是以避免冲突的方式命名,self._state.adding现在检查是更可取的检查方法。

self.pk is None:

在新的Model对象中返回True,除非该对象的UUIDField为其primary_key

你可能要担心的极端情况是除id以外的其他字段是否存在唯一性约束(例如,其他字段上的辅助唯一索引)。在这种情况下,你仍然可以拥有新记录,但是无法保存它。



 类似资料:
  • 问题内容: 我目前正在学习Django,我的一些模型具有自定义方法来获取以特定方式格式化的值。是否可以使用order_by()在模型中定义为属性的这些自定义方法之一的值? 这是一个演示该属性如何实现的示例。 使用此模型,我可以执行以下操作: 但是我不能: 在这样的自定义属性上使用order_by的正确方法是什么? 问题答案: 不,你不能那样做。是在数据库级别应用的,但是数据库对你的自定义Pytho

  • 本文向大家介绍Django中自定义模型管理器(Manager)及方法,包括了Django中自定义模型管理器(Manager)及方法的使用技巧和注意事项,需要的朋友参考一下 1.自定义管理器(Manager) 在语句Book.objects.all()中, objects 是一个特殊的属性,通过它来查询数据库,它就是模型的一个Manager. 每个Django模型至少有一个manager,你可以创建

  • 我有TensorFlow lite Android示例,我想实现我的音频识别自定义训练模型。我已经使用本教程训练了使用自定义数据集的模型。我想在TensorFlow lite Android项目中实现该模型,但它给出了以下错误: 我使用了TensorFlow lite android语音识别示例,并将它们的tflite模型替换为我的自定义数据集模型

  • 问题内容: 我有以下示例未完成方法来比较给定对象的对象类型 该方法可以称为: 此方法实际上不起作用,请帮助我使其起作用 问题答案: 您忘记了: 请注意,此类代码通常是不良OO设计的标志。 还要注意,将对象的类与类进行比较,并使用instanceof是不一样的。例如: 是假的,而 是真的。 是否必须使用一个或另一个取决于您的要求。

  • 当试图更新现有的Django模型对象时(使用< code>save()方法),会插入一个新行。 例如: 在第二次调用< code>save()方法之后,一个重复的条目被插入到我的表中。 以下是模型定义的示例:

  • 本文向大家介绍在Django框架中自定义模板过滤器的方法,包括了在Django框架中自定义模板过滤器的方法的使用技巧和注意事项,需要的朋友参考一下 自定义过滤器就是有一个或两个参数的Python函数:     (输入)变量的值     参数的值, 可以是默认值或者完全留空 例如,在过滤器 {{ var|foo:"bar" }} 中 ,过滤器 foo 会被传入变量 var 和默认参数 bar。 过滤