在打开“编辑模式”时,可能会显示使用ManyToMany字段作为自定义Django CMS插件的一部分,但是一旦发布,模板的行为就好像该字段中没有关联的对象一样。例如,如果您在models.py中定义模型的一部分authorized_personnel = models.ManyToManyField(Employee, blank=True, verbose_name='Authorized Personnel'
,则模板中的{{ instance.authorized_personnel.all }}
会在已发布的视图中返回[]
,即使它在编辑中按预期工作模式视图并返回从数据库填充的列表。你是如何解决这个问题的?
答案 0 :(得分:4)
对于自定义模型,必须将copy_relations(self, oldinstance)
方法定义为模型的一部分。在这种情况下,您可以使用以下内容:
def copy_relations(self, oldinstance):
self.authorized_personnel = oldinstance.authorized_personnel.all()
这提供了Django制作插件实例的已发布副本时所需的信息。有关详细信息,请参阅文档:http://docs.django-cms.org/en/latest/extending_cms/custom_plugins.html#handling-relations