Yes, you can do this, but you need to use Taggit
's API directly (i.e. create the Tag
and TaggedItem
), instead of using the add
method.
First, you'll need to start by freezing taggit
into this migration:
./manage.py datamigration blog migration_name --freeze taggit
Then your forwards method might look something like this (assuming you have a list of tags you want to apply to all Post objects.
def forwards(self, orm):
for post in orm['blog.Post'].objects.all():
# A list of tags you want to add to all Posts.
tags = ['tags', 'to', 'add']
for tag_name in tags:
# Find the any Tag/TaggedItem with ``tag_name``, and associate it
# to the blog Post
ct = orm['contenttypes.contenttype'].objects.get(
app_label='blog',
model='post'
)
tag, created = orm['taggit.tag'].objects.get_or_create(
name=tag_name)
tagged_item, created = orm['taggit.taggeditem'].objects.get_or_create(
tag=tag,
content_type=ct,
object_id=post.id # Associates the Tag with your Post
)