我有一个递归的关系。 修改:将名称“clone”更改为“revision”更合适。
origin = models.ForeignKey('self', null=True, related_name="%(app_label)s_%(class)s_revision")
我可以将Article类的实例添加到这样的列表中(在shell中)。
a.website_article_revision.add(a)
这样原始文章就会在该列表中添加许多修订。
但我希望能够使用字符串动态更改“文章”字。也许存在某种属性名称格式,类似于字符串格式化?
这样的事情。
setattr(a, "website_{0}_revision".format(name), a)
x = getattr(a, "website_{0}_revision".format(name))
答案 0 :(得分:0)
您可以使用setattr
来获取o2m字段attr / RelatedManager,然后调用getattr
来向其添加对象,而不是使用.add()
并分配对象列表。
这样的事情应该有效:
x = getattr(a, "website_{0}_revision".format(name))
x.add(a)