我的Django models.py文件中有两个类:
class ProfileManager(models.Manager):
def create_profile(self, user, member):
# Set default age to 100 years old when profile is created.
years_ago100 = datetime.datetime.now() - datetime.timedelta(days=101 * 365)
age = calculate_age(years_ago100) # <- Used here
profile = self.create(user=user, person_dob=years_ago100, person_age=age)
return
class Profile(models.Model):
person_dob = models.DateField()
person_age = models.IntegerField()
objects = ProfileManager()
def save(self, *args, **kwargs):
# Update to real age when user edits profile for the first time.
self.person_age = calculate_age(self.person_dob) # <- Used here too
super(Profile, self).save(*args, **kwargs)每个类都使用此calculate_age方法:
def calculate_age(born):
today = datetime.date.today()
return (today.year - born.year - ((today.month, today.day) < (born.month, born.day)))如何使两个类都可以访问此方法?一种简单的方法是将该方法变成这样的全局方法,但这似乎是一种简单的方法:
def calculate_age(born):
...
class ProfileManager(models.Manager):
...
class Profile(models.Model):
...而且,如果我想在这个特定的模型模块之外访问该方法,这是行不通的。在使用Django时,有标准的方法来做到这一点吗?
发布于 2020-10-23 19:45:49
您可以将函数calculate_age保存到另一个文件中,然后将其导入到models.py文件的顶部。这将允许访问内部的所有类/方法/函数。
https://stackoverflow.com/questions/64506347
复制相似问题