使用外键关系“另一面”中的外键字段获取查询集

时间:2019-03-17 08:32:47

标签: django django-models

如果这个问题没有道理,请原谅我,尝试自学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()的东西,现在从这个结果中我如何获得类别模型?

2 个答案:

答案 0 :(得分:1)

我不确定我是否完全了解您要执行的操作,但是通常,在查询时,您可以使用双下划线关注关系。以下是几个可能的查询:

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

答案 1 :(得分:0)

您的查询UserGroupHeader.objects.get(pk=9).usergroupdetail_set.all()将返回QuerySet个对象中的UserGroupDetail个。为了获得每个category的{​​{1}},您可以:

UserGroupDetail

或者根据您的需求类似的东西