2017-08-17 89 views
1

我使用Django-CMS 多对多现场工作正常,当我添加插件或更新,但 发布页面后,我没有得到在那里我增加了许多许多领域中的任何数据。多对多场不工作的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) 

此处字段“client_logo”将是即消失,当我发布djagno-CMS页面

+0

[Django的CMS插件实例相关\ _set返回空列表(可能的重复https://stackoverflow.com/questions/19778911/django-cms-plugin-instance-related-set-returns-empty-名单) – mch

回答

1

的关系需要通过copy_relations方法明确地复制(见django-cms models manual) 。向ManyToManyField添加related_name属性也是有利的,特别是当模型包含多组外键或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()