发布页面后我遇到了copy_relations的问题。 我有一个附加模型的插件。这个模型有我的插件的ForeignKey。
class InfContactForm(CMSPlugin):
name = models.CharField(max_length=50)
def copy_relations(self, oldinstance):
self.inf_contact_form.all().delete()
for inf_contact_form in oldinstance.inf_contact_form.all():
inf_contact_form.pk = None
inf_contact_form.plugin = self
inf_contact_form.save()
class InfContactFormAgreement(models.Model):
inf_contact_form = models.ForeignKey(InfContactForm, related_name="inf_contact_form")
agreement = HTMLField(blank=True, null=True)
" InfContactFormAgreement"然后使用模型作为内嵌堆叠在" InfContactForm"插件形式。
就像它是用docs编写的那样,还有copy_relations()方法,但是当页面发布时,没有任何反应。当我再次回到编辑模式时,InfContactFormAgreement每次都加倍。
这也是我的cms_plugins.py文件:
class PluginInfContactForm(CMSPluginBase):
render_template = '_contact_form.html'
name = name1
model = InfContactForm
require_parent = False
inlines = [AgreementStackedInline, ]
def render(self, context, instance, placeholder):
context['instance'] = instance
context = super(PluginInfContactForm, self).render(context, instance, placeholder)
agreements = instance.inf_contact_form.all()
context.update({
'agreements': agreements,
})
return context
plugin_pool.register_plugin(PluginInfContactForm)
感谢您的任何建议。
答案 0 :(得分:0)
代替:
inf_contact_form.plugin = self
您应该使用:
inf_contact_form.inf_contact_form = self
,结果代码应如下所示:
def copy_relations(self, oldinstance):
self.inf_contact_form.all().delete()
for inf_contact_form in oldinstance.inf_contact_form.all():
inf_contact_form.pk = None
inf_contact_form.inf_contact_form = self
inf_contact_form.save()
致谢