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