как я могу изменить тег страницы 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()

но я не знаю, как изменить список тегов.


person Majid Babaie    schedule 14.04.2017    source источник
comment
Не могли бы вы показать полный класс Page и Tag, пожалуйста?   -  person dentemm    schedule 15.04.2017
comment
хорошо, я добавил к вопросу   -  person Majid Babaie    schedule 15.04.2017
comment
Если вы хотите что-то сделать перед сохранением объекта, вы можете использовать signals для вашего случая может быть presave проверить документ django [1]: docs.djangoproject.com/en/1.10/ref/signals/   -  person julian salas    schedule 15.04.2017
comment
спасибо, но моя проблема не в том, чтобы изменить что-либо, что я знаю, чтобы изменить заголовок или дату публикации или другое поле char или целое число, но я не знаю, как изменить тег тег не является символом или целым числом, извините за мой плохой английский   -  person Majid Babaie    schedule 16.04.2017
comment
@dentemm, juliansalas, я просто хочу найти специальные слова в теле и добавить слова в тег. это очень важно, пожалуйста, помогите мне   -  person Majid Babaie    schedule 16.04.2017
comment
я нашел ответ, который я добавил к вопросу   -  person Majid Babaie    schedule 16.04.2017
comment
Рад, что ты нашел это!   -  person dentemm    schedule 16.04.2017
comment
Можете ли вы добавить это как фактический ответ? Тогда мы можем проголосовать за это!   -  person FlipperPA    schedule 18.04.2017
comment
@FlipperPA хорошо :)   -  person Majid Babaie    schedule 18.04.2017


Ответы (1)


Я нашел ответ :D

просто нужно изменить

self.tags = "test,test2,test3"

to

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().save(*args, **kwargs)

(Или, при работе со старым Python 2.7, super(ProductPage, self).save(*args, **kwargs))

person Majid Babaie    schedule 18.04.2017