django - 更新 Django 模型字段时的最佳实践?这是经理课程的用途吗?
问题描述
我对 Django 很陌生,我想知道更新字段的最佳做法是什么。这是我的模型:
class Website(models.Model):
id = models.AutoField(primary_key=True)
url = models.TextField()
is_awesome = models.BooleanField(default=False)
现在我有一个单独的帮助文件,WebsiteHelper.py,其中有许多与数据库无关的其他功能,还有用于更新数据库中特定字段的功能:
def __mark_needs_redone(Website):
Website.update(is_awesome=True)
是否有更干净的地方可以容纳这些功能,例如:
class WebsiteManager(models.Manager)
#Execute function here
这是应该如何使用管理器的吗?如果没有,这里的最佳做法是什么?
解决方案
如果该字段在表单正在处理的模型上,您可以覆盖您访问实际实例的save()方法。
class Website(models.Model):
id = models.AutoField(primary_key=True)
url = models.TextField()
is_awesome = models.BooleanField(default=False)
def save(self, commit=True):
self.instance.is_awesome = True
return super().save(commit)
不要忘记之后的super().save(commit)调用,因为父级负责保存逻辑
推荐阅读
- c# - WPF 从 SystemParameter 单位转换为与设备无关的单位
- c# - 使用 Azure 存储异步创建 blob 时出现异常 - UploadTextAsync
- sql - SELECT子句SQL中出现多个字段时无法对单个字段进行GROUP BY
- html - 防止 div 重叠
- python - 正则表达式仅获取第一个元素-Python
- pentaho - Pentaho Kettle 的 Slack 插件安装失败 - MacOS
- asp.net-mvc-5 - ASP.Net MVC 5 动态添加字段到表单
- android - 尝试编译旧的 Android Native App 时出错
- python - 熊猫使用逻辑或公共列之间合并两个数据框
- ios - Cloud Storage 在启动时崩溃,找不到默认存储分区。斯威夫特 4 Xcode 9