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)
我需要在某个模板上列出提案的标签,这样我就会写{% for tag in proposal.get_tags %}
并且效果很好。
现在我读到了有关管理员的信息,将get_tags
转换为经理似乎是一个很好的举措。我尝试了以下但它没有输出一个东西。我究竟做错了什么?首先把它变成一个经理是否有意义?
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)
用法:{% for tag in p.tags.all %}
输出:没有
答案 0 :(得分:1)
您不需要自定义功能。
当使用ManyToManyField引用表时,您将获得一个名为MODEL_set的方法来获取该模型的查询集。
因此,在您的情况下,您可以像这样引用所有标签:
proposal = Proposal.objects.get(pk=1)
tags = proposal.tag_set.all() # You can also use filter here