在Django中创建“Comment”实例以进行迁移?
我现在有一堆旧的评论,需要把它们迁移到 django.contrib.comment
里。我的计划是手动创建评论实例,然后像下面这样保存:
# assume some_content is NOT a django Comment instance, but in some proprietary format
# assume the model I'm attaching the comment to is called Blog i.e models.Blog
c = Comment()
c.user = user
c.submit_date = some_comment.comment_date_time
c.comment = some_comment.comment
...
c.save()
主要的问题是缺少在 django.contrib.comment.model
中找到的 BaseCommentAbstractModel
类里的信息。特别是有三个字段:
BaseCommentAbstractModel(models.Model):
# Content-object field
content_type = models.ForeignKey(ContentType,
verbose_name=_('content type'),
related_name="content_type_set_for_%(class)s")
object_pk = models.TextField(_('object ID'))
content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk")
我看过文档,尽量去了解源代码,但信息不够详细。我该如何正确地从模型对象(model.Blog)中指定这些字段呢?
也许某个地方有个方法,可以接受模型对象和评论内容来添加评论?
1 个回答
1
来自文档的内容:
首先,你需要把content_type设置为你模型的ContentType实例,也就是你想要添加评论的那个模型:
content_type = ContentType.objects.get_for_model(Blog)
接着,把object_pk设置为你对象的主键,也就是唯一标识这个对象的那个值:
object_pk = myBlog_instance.pk
content_object会自动指向这两个字段,所以你不需要手动设置它。