3

当使用 django.contrib.comments 时,是否可以将反向关系添加到具有注释的模型中?

例如:

post = Post.objects.all()[0]
comments = post.comments.all()
4

2 回答 2

6

是的,您应该能够:

from django.contrib.contenttypes import generic
class Post(models.Model):
    ...
    comments = generic.GenericRelation(Comments)

根据关于反向通用关系的 Django 文档

于 2009-06-17T17:29:29.493 回答
1

我想出了另一种方法来做到这一点(为什么?因为当时我不知道有任何其他方法)。它依赖于一个抽象模型类,系统中的所有模型都从该类派生。抽象模型本身有一个comments定义的方法,当被调用时,它会返回QuerySet与相应具体对象关联的所有注释对象中的一个。我是这样实现的:

from django.db import models
from django.contrib.contenttypes.models import ContentType
from django.contrib.comments.models import Comment

class AbstractModel(models.Model):

    def comments(self):
        """Return all comment objects for the instance."""
        ct = ContentType.objects.get(model=self.__class__.__name__)
        return Comment.objects.filter(content_type=ct,
                                    object_pk=self.id)

    class Meta:
        abstract = True
于 2009-06-17T17:42:55.523 回答