首页 > 解决方案 > 使用 django 模型方法作为静态函数

问题描述

我想使用 django 模型方法作为静态函数。更具体地说,我想在我的表 Patient 的一个实例上使用一个名为 age 的模型方法,如下所示,但我还想使用 pandas apply 函数将 age 函数应用于 pandas 数据帧中的行。这是可能的还是我必须专门编写另一个函数来处理我的数据框?

class Patient(models.Model):
    pat_id1 = models.AutoField(db_column='Pat_ID1', primary_key=True)  
    birth_dttm = models.DateTimeField(db_column='Birth_DtTm', blank=True, null=True)

    objects = models.Manager()

    class Meta:
        managed = False
        db_table = 'Patient'

     @property
     def age(self):
         return relativedelta(date.today(), self.birth_dttm.date()).years

标签: pythondjangopandasclassdjango-models

解决方案


您的age功能正在使用self. 这意味着此函数依赖于您的类的实例来提供输出。因此,此方法不能声明为staticmethod.

编辑journaldev的 摘录静态方法有一个非常清晰的用例。当我们需要一些不是对象而是完整类的功能时,我们将方法设为静态。当我们需要创建实用程序方法时,这非常有利,因为它们不依赖于对象生命周期。


推荐阅读