自定义Django CMS插件模板在发布的视图中将ManyToManyField显示为空

时间:2014-05-07 22:04:46

标签: python django plugins foreign-keys django-cms

在打开“编辑模式”时,可能会显示使用ManyToMany字段作为自定义Django CMS插件的一部分,但是一旦发布,模板的行为就好像该字段中没有关联的对象一样。例如,如果您在models.py中定义模型的一部分authorized_personnel = models.ManyToManyField(Employee, blank=True, verbose_name='Authorized Personnel',则模板中的{{ instance.authorized_personnel.all }}会在已发布的视图中返回[],即使它在编辑中按预期工作模式视图并返回从数据库填充的列表。你是如何解决这个问题的?

1 个答案:

答案 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