假设我有一个 Post 类,它有标题和标签字段。
在 post_save 信号中,我想在标题中找到主题标签并以逗号分隔保存到标签字段。我怎样才能做到这一点?
为避免递归,您必须断开并重新连接信号处理程序,以便保存您的实例。
from django.db.models.signals import post_save
from myapp.models import Post
def parse_hash_tags(sender, instance, created, **kwargs):
post_save.disconnect(parse_hash_tags, sender=Post)
instance.tags = ','.join(re.findall(r'(?:#(\w+))', instance.caption))
instance.save()
post_save.connect(parse_hash_tags, sender=Post)
post_save.connect(parse_hash_tags, sender=Post)
您可以为此使用正则表达式
>>> import re
>>> s = 'some #example #post caption'
>>> m = re.findall('(?:#([^\s]+))+', s)
>>> m
['example', 'post']
>>> ', '.join(m)
'example, post'