首页 > 解决方案 > 更新 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

这是应该如何使用管理器的吗?如果没有,这里的最佳做法是什么?

标签: djangopython-3.xdjango-modelsdjango-managers

解决方案


如果该字段在表单正在处理的模型上,您可以覆盖您访问实际实例的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)调用,因为父级负责保存逻辑


推荐阅读