当使用 django.contrib.comments 时,是否可以将反向关系添加到具有注释的模型中?
例如:
post = Post.objects.all()[0]
comments = post.comments.all()
当使用 django.contrib.comments 时,是否可以将反向关系添加到具有注释的模型中?
例如:
post = Post.objects.all()[0]
comments = post.comments.all()
是的,您应该能够:
from django.contrib.contenttypes import generic
class Post(models.Model):
...
comments = generic.GenericRelation(Comments)
我想出了另一种方法来做到这一点(为什么?因为当时我不知道有任何其他方法)。它依赖于一个抽象模型类,系统中的所有模型都从该类派生。抽象模型本身有一个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