2017-10-27 30 views
0

であっても、私はジャンゴで働いていますし、フィールド「年齢」が含まれている必要がモデルを持っている(下記見て)ジャンゴでProgrammingError:オブジェクトは、何の属性を持っていない属性がオブジェクト

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が

(結果-モデルと同じクラスに)このモデルから来ています

ただし、 'ForeignKey'オブジェクトには「birth_date」という属性はありません。私はそれを取り除くためにコードを微調整しようとしましたが、何も動作していないようです。

なぜこのエラーが発生するのでしょうか?

ありがとうございました!

答えて

2

フィールドをこのように初期化することはできません。宣言される前にクラスのインスタンスの値にアクセスして初期化しようとしています。

使用状況から判断すると、あなただけの

@property 
def age(self): 
    return calculate_age(self.lifter.birth_date) 
+0

にプロパティ

変更

age = calculate_age(lifter.birth_date) 

作ることができるので、ありがとうございました!私は年齢を計算すると信じています(これは私が答えを受け入れるためです)。 Django-adminの結果に行く時の年齢は表示されません。年齢の設定方法は分かりますか? Django-adminに既に記入されているフィールドとして表示されます(それが意味を成す場合)? – user3257736

+0

@ user3257736 - https://stackoverflow.com/q/32972838/1324033 – Sayse

関連する問題