私は再帰的関係を持っています。 を編集:「リビジョン」に「clone」という名前を変更した方が適切です。属性名の単語を置き換えて、そのリストに追加する方法
origin = models.ForeignKey('self', null=True, related_name="%(app_label)s_%(class)s_revision")
Articleクラスのインスタンスをこのようなリスト(シェル内)に追加できます。
a.website_article_revision.add(a)
このように、元の記事には、このリストに多くのリビジョンが追加されます。
しかし、記事の単語を文字列で動的に変更する機能が必要です。たぶん、文字列の書式に似た属性名の書式がありますか?
何かがそうです。代わりにsetattr
を使用してオブジェクトリストを割り当てるので
setattr(a, "website_{0}_revision".format(name), a)
x = getattr(a, "website_{0}_revision".format(name))
てみましたか? 'setattr' /' getattr'コードは 'a'を二度使用していますが、実際に' a'を自分自身に追加している場合には完全に理解できません。 – Cfreak
あなたは'a'(別名コピー)のクローンを作成します。また、削除が問題になる可能性があります。 – Back2Basics
はい、私はしました。 "Articleオブジェクトは反復可能ではありません"というTypeError例外がスローされます –