是的,您可以这样做,但是您需要Taggit
直接使用 's API(即创建Tag
and TaggedItem
),而不是使用add
方法。
首先,您需要先冻结taggit
此迁移:
./manage.py datamigration blog migration_name --freeze taggit
然后您的 forwards 方法可能看起来像这样(假设您有一个要应用于所有 Post 对象的标签列表。
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
)