Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 常用筛选器的多对多关系中的自定义管理器_Django_Django Orm_Django Managers - Fatal编程技术网

Django 常用筛选器的多对多关系中的自定义管理器

Django 常用筛选器的多对多关系中的自定义管理器,django,django-orm,django-managers,Django,Django Orm,Django Managers,我需要在某个模板上列出提案的标签,这样我就可以为提案中的标签编写{%for tag.get_tags%},而且效果非常好 现在我读到了关于管理者的文章,将我的get_标签转换成管理者似乎是一个不错的举措。我尝试了以下操作,但没有输出任何内容。我做错了什么?从一开始就把它变成经理有意义吗 class Proposal(models.Model): author = models.ForeignKey(Person, related_name="author") def get_t

我需要在某个模板上列出提案的标签,这样我就可以为提案中的标签编写
{%for tag.get_tags%}
,而且效果非常好

现在我读到了关于管理者的文章,将我的
get_标签
转换成管理者似乎是一个不错的举措。我尝试了以下操作,但没有输出任何内容。我做错了什么?从一开始就把它变成经理有意义吗

class Proposal(models.Model):
    author = models.ForeignKey(Person, related_name="author")

    def get_tags(self):
        return Tag.objects.filter(tagged_proposals=self.id) 

class Tag(models.Model):
    tagged_proposals = models.ManyToManyField(Proposal)
    name = models.CharField(primary_key=True, max_length=60)

用法:
{%fortaginp.tags.all%}
output:nothing

不需要自定义函数

当一个表被ManyToManyField引用时,您会得到一个名为MODEL_set的方法来获取该模型的查询集

因此,在您的情况下,您可以像这样引用所有标记:

class ProposalsTagsManager(models.Manager):
    def get_query_set(self):
                proposal_id = how-do-i-get-the-proposal-id???
        return Tag.objects.filter(tagged_proposals=proposal_id)

非常感谢你!我不知道!Django的一个主要问题是缺乏完整的文档(针对初学者)。Django有很多特性对于Django初学者来说很难发现。
proposal = Proposal.objects.get(pk=1)
tags = proposal.tag_set.all() # You can also use filter here