我在Django工作,并且有一个模型需要包含字段“age”(见下文)
class Result(models.Model):
group = models.ForeignKey(Group, null=True)
lifter = models.ForeignKey("Lifter", null=True)
body_weight = models.FloatField(verbose_name='Kroppsvekt', null=True)
age_group = models.CharField(max_length=20, verbose_name='Kategori',
choices=AgeGroup.choices(), null=True)
weight_class = models.CharField(max_length=10, verbose_name='Vektklasse',
null=True)
age = calculate_age(lifter.birth_date)
total_lift = models.IntegerField(verbose_name='Total poeng',
blank=True, null=True)
年龄是使用utils.py中的方法计算的,名为“calculate_age”:
def calculate_age(born):
today = date.today()
return today.year - born.year((today.month, today.day
< (born.month,born.day))
传递给calculate_age方法的lifter.birth_date来自此模型(与结果模型属于同一类)
class Lifter(Person):
birth_date = models.DateField(verbose_name='Fødselsdato', null=True)
gender = models.CharField(max_length=10, verbose_name='Kjønn',
choices=Gender.choices(), null=True)
但是,我收到错误'ForeignKey'对象没有属性“birth_date”。我试过调整代码来摆脱它,但似乎没有任何工作。
有谁知道为什么我会收到此错误?
感谢您的时间!
答案 0 :(得分:2)
你不能初始化这样的字段,你试图通过在声明它之前访问类实例的值来初始化它。
根据您的使用情况判断,您可以将其设为属性
变化
age = calculate_age(lifter.birth_date)
到
@property
def age(self):
return calculate_age(self.lifter.birth_date)