【问题标题】:How to do a reverse foreignkey lookup for all records in Django?如何对 Django 中的所有记录进行反向外键查找?
【发布时间】:2011-11-21 20:04:41
【问题描述】:

我正在尝试使用 Django 1.3 进行反向 SQL 查找。我发现了很多相关的问题,但不幸的是我只能在一条记录上找到答案,而不是一次在多条记录上。

基本上,这是我的情况:我有一个模型“技术”,看起来像这样:

class Technique(models.Model):
    title = models.CharField(max_length=32)
    description = models.CharField(max_length=256)
    skill_level = models.IntegerField()
    parent_technique = models.ForeignKey('self', blank=True, null=True)

目前我只是列出所有无父技术。

t = get_list_or_404(Technique.objects.filter(parent_technique=None))

现在我想要(或至少认为我想要)是t 中的所有条目都获得一个附加字段“childs”,其中列出了将当前技术列为其父项的所有技术。谁能帮我解决这个问题?

另外,如果他们是实现我想要的另一种方式,请随时贡献。我刚开始使用 Django,所以我可能不知道任何替代方法。

提前非常感谢!

【问题讨论】:

    标签: django django-models django-views reverse-lookup


    【解决方案1】:

    这已经是内置的 - 请参阅following relations backwards

    在你的情况下,只需这样做:

    obj.technique_set.all()
    

    对于t 中的每个obj

    【讨论】:

    • “_set”是关键。要注意的主要事情:)
    • 是的,但它似乎不适用于自引用模型,所以 related_name 在这种情况下为我做了诀窍。
    【解决方案2】:

    在模型中添加相关名称

    parent_technique = models.ForeignKey('self', blank=True, null=True, related_name="childrens_tech")
    

    smt_technique 的所有子技术都是

    smt_technique.childrens_tech.all()
    

    【讨论】:

      猜你喜欢
      • 2013-02-24
      • 2018-10-16
      • 1970-01-01
      • 1970-01-01
      • 2020-07-18
      • 2023-04-05
      • 2019-02-11
      • 1970-01-01
      相关资源
      最近更新 更多