gpt4 book ai didi

django - 在南方数据迁移中使用 django-taggit?

转载 作者:行者123 更新时间:2023-12-02 03:35:46 24 4
gpt4 key购买 nike

我有一个使用 django-taggit 的模型。我想执行向该模型添加标签的南方数据迁移。但是,.tags 管理器在 South 迁移中不可用,您必须使用 South orm['myapp.MyModel'] API 而不是普通的 Django orm。

这样做会抛出异常,因为 post.tags 是 None。

post = orm['blog.Post'].objects.latest()
post.tags.add('programming')

是否可以在南方数据迁移中使用 taggit 创建和应用标签?如果是这样,怎么办?

最佳答案

是的,您可以这样做,但您需要直接使用Taggit的API(即创建TagTaggedItem),而不是使用 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
)

关于django - 在南方数据迁移中使用 django-taggit?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13692345/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com