0

ForeignKey Campus オブジェクトを持つ Building オブジェクトがある場合、Building の JSON メソッドをどのように変更して、このように見苦しくならないようにしますか?

def json(self):
    if self.campus:
        return {
        'id_number': self.id,
        'campus': self.campus.json(),
        'common_name': self.common_name,
        #....all the other fields
        }

    else:
        return {
        'id_number': self.id,
        'common_name': self.common_name,
        #....all the other fields
        }       

上記のコードは機能します。if ステートメントを再配置でき、両方の if ブランチの他のすべてのフィールドをリストする必要がないように、if ステートメントをフォーマットする方法があるかどうか疑問に思っていました。主な理由は、null の別のリレーショナル オブジェクト、blank=True がある場合、これがさらに厄介になるためです。

4

1 に答える 1

1

他のフィールドを 2 回定義することは避けたいと思います。

def json(self):
    out = {
    'id_number': self.id,
    'common_name': self.common_name,
    #....all the other fields
    }
    if self.campus:
        out['campus'] = self.campus.json()
    return out

このメソッドと元のメソッドは、JSON でエンコードされた文字列ではなく、python dict を返すことに注意してください。

于 2013-07-14T21:57:05.110 に答える