- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 MyModel 上定义了一个 pre_save,它看起来像这样:
@receiver(pre_save, sender=MyModel)
def _mymodel_pre_save(sender, instance, **kwargs):
if some_condition():
instance.somecolumn = 'eggs'
即它希望能够修改 MyModel 实例的某些属性,并且当然希望这些更改在 save() 调用期间保持不变。我相信这是 pre_save 函数的典型用法。 只要 save() 调用不指定 update_fields 就可以正常工作。
我想知道此时是否有任何安全合理的方法在 MyModel 实例的 save() 调用中使用 update_fields。如果我天真地调用:
myinstance = MyModel.objects.get(id=100)
myinstance.othercolumn = 'spam'
myinstance.save(update_fields=['othercolumn'])
生成的 UPDATE 语句如下所示:
UPDATE "myapp_mymodel" SET "othercolumn" = 'spam' WHERE "myapp_mymodel"."id" = 100
缺少 pre_save 中“somecolumn”的预期更新。我想可以通过查看 pre_save 函数可用的 update_fields(作为卡住集)从 pre_save 内部检测到这种情况,但是我看不到 pre_save 强制执行其预期更改的任何方式调用者有一组更严格的 update_fields,如上例所示。或者有什么解决方法吗?
最佳答案
解决方法是:
@receiver(pre_save, sender=MyModel)
def _mymodel_pre_save(sender, instance, **kwargs):
if some_condition():
instance.somecolumn = 'eggs'
instance.save()
注意额外的“instance.save()”调用。
但是在执行 instance.somecolumn = 'eggs' 之后,您必须确保 some_condition() 不再为 True。否则,将导致保存/预保存/保存/预保存调用循环
关于python - 在指定 update_fields 时使用 pre_save,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25123960/
我在 WordPress 的用户个人资料页面上创建了一些自定义字段。 我已经设法为用户构建了一个前端编辑器来更改一些电子邮件首选项: E-Mail Prefereneces Updated'; end
我在 MyModel 上定义了一个 pre_save,它看起来像这样: @receiver(pre_save, sender=MyModel) def _mymodel_pre_save(sender
模型定义: class Footprint(models.Model) date = models.DateTimeField(auto_now = True) class Stuff(Footp
追溯讲述了这个故事: Error Traceback (most recent call last): File "/Users/adamstarrh/almondking/AlmondKing/
谁能帮我理解 Django 信号的 update_field 参数? According to the docs : update_fields: The set of fields to updat
在这里,我创建了一个用户管理器,创建了身份验证后端,但在使用管理器登录时出现错误 我使用 AbstractBaseUser 创建一个用户,如下所示: 模型.py class Manager(Abstr
我有一个表单,其中有一个上传 ($_FILES['watch_photo']) 字段。 我看了一圈,才把这个功能放在一起。 它基本上获取了所有相关信息以便将来可以重复使用,完成后它将返回 $pid 数
我的 django 应用程序中有一个信号,我想检查模型中的某个字段是否已更新,以便我可以继续做一些事情。 我的模型看起来像这样...... class Product(models.Model):
我正在使用 Django 和 Python 3.7。我有这个代码 article = get_article(id) ... article.label = label article.save(up
我是一名优秀的程序员,十分优秀!