0
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 %}输出:无

4

1 回答 1

1

您不需要为此使用自定义功能。

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

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

proposal = Proposal.objects.get(pk=1)
tags = proposal.tag_set.all() # You can also use filter here
于 2012-10-16T22:26:56.533 回答