Django-将相关字段附加到查询集

Django-将相关字段附加到查询集,django,models,django-queryset,Django,Models,Django Queryset,我有两种型号: class A(models.Model): # fields class B(models.Model): a = models.ForeignKey(A) name = models.CharField(max_length=64) 我想做的是,除了从B获取相关对象外,还从a获取一个过滤后的查询集,并将它们附加到从a获取的查询集,这样我就能够通过以下方式访问name字段:a.B.name 知道怎么做吗?问题是,由于关系是一对多,A

我有两种型号:

class A(models.Model):
    # fields

class B(models.Model):
    a       = models.ForeignKey(A)
    name    = models.CharField(max_length=64)
我想做的是,除了从B获取相关对象外,还从a获取一个过滤后的查询集,并将它们附加到从a获取的查询集,这样我就能够通过以下方式访问
name
字段:
a.B.name


知道怎么做吗?

问题是,由于关系是一对多,
A
不是只有一个
B
,而是一个
B\u集

你可以这样说:

for b in a.b_set.all():
    b.name
但是你不能只引用
B
,因为这个概念并不存在。但是,如果您使用的是OneToOneField,则会出现这种情况。然后你可以很容易地做到:

a.b.name

因为每个
A
只有一个
B
。但是,您必须在实际关系发生后对对象进行建模,而不是您希望api如何工作。

您确定不希望单独获取查询集,然后像中那样将它们组合在一起?如果我过滤我的A模型,然后将其与B组合,会怎么样?我将如何处理这两种模型之间的关系?看起来链只是盲目地连接所有元素:是的,它似乎只连接您的查询集。但是,如果您这样做:B.objects.filter(a_u的某个_字段u of a='string'),该怎么办呢。然后假设你有一个你想要的b中的实例b。然后您将执行:b.a_set.filter(name='somethingelse')。总之,您通过a请求满足条件的B实例,然后获取一个或多个,并请求在其他条件下包含在B中的所有a实例。这是两个类之间的关系,但我不知道你会觉得这有多有用。无论如何,A.B不是一个选择。我已经这样做了,谢谢。实际的关系是一对夫妻。我需要做些什么才能使用:
a.b_set.all()
?我已经试过了,但它看起来不像是自动创建的关系。除非您指定了一个
相关名称
,否则它将在那里,在这种情况下,它将是
相关名称
值。