2017-08-17 88 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()