首页 > 解决方案 > 使用外键关系“另一端”中的外键字段获取查询集

问题描述

如果这个问题没有意义,请原谅我,试着自学 django。我一直在尝试搜索如何做到这一点,但我不确定我在搜索中是否使用了正确的词。

我有以下型号。

class Category(models.Model):
    code = models.CharField(max_length=10, unique=True)
    description = models.CharField(max_length=50)

class UserGroupHeader(models.Model):
    code = models.CharField(max_length=10, unique=True)
    description = models.CharField(max_length=50)

class UserGroupDetail(models.Model):
    usergroupheader = models.ForeignKey(UserGroupHeader, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.PROTECT)

如何使用 UserGroupHeader 从 Category 模型中获取查询集?到目前为止我得到的是这样的东西UserGroupHeader.objects.get(pk=9).usergroupdetail_set.all(),现在从这个结果中我如何获得类别模型?

标签: djangodjango-models

解决方案


我不确定我是否完全理解你想要做什么,但一般来说,在查询时,你可以使用双下划线来跟踪关系。以下是几个可能的查询:

my_group_header = UserGroupHeader.objects.get(...)
Category.objects.filter(usergroupdetail__usergroupheader=my_group_header) # Gets Category objects related to my_group_header through UserGroupDetail model

Category.objects.filter(usergroupdetail__usergroupheader__code='abc') # Gets Category objects related to UserGroupHeader object with code 'abc' through UserGroupDetail model

UserGroupHeader.objects.filter(usergroupdetail__category__code='abc') # Gets UserGroupHeader objects related to Category object with code 'abc' through UserGroupDetail model

推荐阅读