无法通过`Model`实例访问Manager

Ali*_*and 4 python django django-models

我有多态标记模型,我想为它创建tag_cloud,但是当我想将相关对象计算到标签时

tags = TaggedItem.objects.all()
# Calculate tag, min and max counts.
min_count = max_count = tags[0].object.objects.count()
Run Code Online (Sandbox Code Playgroud)

我得到:

Manager isn't accessible via Artcle instances
Run Code Online (Sandbox Code Playgroud)

tagging.models.py

class Tag(models.Model):
    name = models.CharField(max_length=100)
    slug = models.SlugField(unique=True, max_length=100)
    #.....

class TaggedItem(models.Model):
    tag = models.ForeignKey(Tag)
    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    object = generic.GenericForeignKey('content_type', 'object_id')
    #.....
Run Code Online (Sandbox Code Playgroud)

man*_*nji 5

您正试图从模型实例访问管理器,这是不可能的.更多信息:检索对象(特别是注释).

 tags[0].object.objects.count()   \/
         ¨¨¨¨¨¨                   /\
Run Code Online (Sandbox Code Playgroud)

而你可以做到这一点(未测试):

object_klass = tags[0].object.__class__
min_count = max_count = object_klass.objects.filter(pk=tags[0].object.pk).count()
Run Code Online (Sandbox Code Playgroud)