2017-04-14 43 views
0

我如何保存之前更改鹡鸰页面标签?如何我可以改变鹡鸰CMS页面标签之前保存

我可以通过重写save()喜欢这个 -

class ProductPageTag(TaggedItemBase): 
    content_object = ParentalKey('product.ProductPage',related_name='tagged_items') 

class ProductPage(Page): 
    body = StreamField(BodyStreamBlock) 
    tags = ClusterTaggableManager(through=ProductPageTag, blank=True) 
    def save(self, *args, **kwargs): 
     self.title = "my title" # work 
     self.tags = "test,test2,test3" #not work 
     super(ProductPage, self).save() 

更改标题,但我不知道如何更改标签列表。

+1

你能不能显示完整的页面d请标签类? – dentemm

+0

好吧,我加入到这个问题 –

+0

如果你想保存一个对象之前,做任何事情,你可以用'signals'为你的情况可能是'presave'检查出的Django的文档[1]:https://开头的文档。 djangoproject.com/en/1.10/ref/signals/#django.db.models.signals.pre_save –

回答

2

我找到了答案:d

只需要改变

self.tags = "test,test2,test3" 

self.tags.add('test',"test2","test3") 

最终代码

class ProductPageTag(TaggedItemBase): 
    content_object =ParentalKey('product.ProductPage',related_name='tagged_items') 

class ProductPage(Page): 
    body = StreamField(BodyStreamBlock) 
    tags = ClusterTaggableManager(through=ProductPageTag, blank=True) 

    def save(self, *args, **kwargs): 
     self.title = "my title" # work 
     self.tags.add('test',"test2","test3") #work 
     super(ProductPage, self).save()