![](/img/trans.png)
[英]how to access variable of one method from another method within the same class in django class based views
[英]access class variable from django model method
我有以下Django models.py
:
class members(models.Model):
def calculate_age(dob):
return int((datetime.date.today() - dob).days / 365.25 )
auto_id = models.AutoField(primary_key=True)
member_name = models.CharField(max_length=25, blank=False, default='')
member_dob = models.DateField(blank=True)
wife_name = models.CharField(max_length=25, blank=False, default='')
wife_dob = models.DateField(blank=True)
member_age = property(calculate_age(member_dob))
wife_age = property(calculate_age(wife_dob))
現在從calculate_age
如果我通過member_dob
它將作為日期字段類型而不是實際值。
但是,如果我使用自我,那么它的工作原理如下:
class members(models.Model):
def calculate_age(self):
return int((datetime.date.today() - self.member_dob).days / 365.25 )
def calculate_age_wife(self):
return int((datetime.date.today() - self.wife_dob).days / 365.25 )
auto_id = models.AutoField(primary_key=True)
member_name = models.CharField(max_length=25, blank=False, default='')
member_dob = models.DateField(blank=True)
wife_name = models.CharField(max_length=25, blank=False, default='')
wife_dob = models.DateField(blank=True)
member_age = property(calculate_age)
wife_age = property(calculate_age_wife)
現在的問題是,我需要為多個項目調用此calculate_age
,因此需要將值傳遞給方法
更新代碼
class members(models.Model):
def calculate_age(self):
if self.member_dob:
return int((datetime.date.today() - self.member_dob).days / 365.25 )
elif self.wife_dob:
return int((datetime.date.today() - self.wife_dob).days / 365.25)
else:
return None
首先,如果您正在使用python 2,則需要傳遞帶有參數的self實例變量。 在python 3中,我們不需要顯式傳遞self實例。 您可以通過在同一方法和內部方法中傳遞兩個參數來做到這一點,只需要檢查條件就是self引用member_dob或ifeel_dob
def calculate_age(self):
if self.member_dob:
return int((datetime.date.today()-self.member_dob).days/365.25)
else:
return int((datetime.date.today()-self.wife_dob).days/365.25 )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.