【问题标题】:manytomany field not working django-cmsmanytomany 字段不工作 django-cms
【发布时间】:2018-01-25 17:43:54
【问题描述】:
我正在使用 django-cms
当我添加插件或更新时,多对多字段工作正常但是
发布页面后,我没有得到任何数据,我添加了多对多字段。
模型是这样的
@python_2_unicode_compatible
class ClientLogo(CMSPlugin):
client_logo = models.ManyToManyField(LogoPluginModel, blank=True)
class LogoPluginModel(CMSPlugin):
title = models.CharField(max_length=100)
当我发布 djagno-cms 页面时,此处的字段“client_logo”将消失
【问题讨论】:
标签:
python
django
django-admin
django-cms
【解决方案1】:
需要通过copy_relations 方法显式复制关系(请参阅django-cms models manual)。将related_name 属性添加到ManyToManyField 也是有利的,尤其是当模型包含多组外键或ManyToManyFields 时。
@python_2_unicode_compatible
class ClientLogo(CMSPlugin):
client_logo = models.ManyToManyField(
LogoPluginModel,
blank=True,
related_name='client_logos',
)
class LogoPluginModel(CMSPlugin):
title = models.CharField(max_length=100)
def copy_relations(self, oldinstance):
self.client_logos.all().delete()
for logo in oldinstance.client_logos.all():
logo.pk = None
logo.showroom = self
logo.save()