简体   繁体   English

在Django中选择一组相关的对象

[英]Selecting a related set of objects in Django

I have two models: 我有两个模型:

class ModelA(models.Model):
    name = models.CharField()

class ModelB(models.Model):
    a = models.ForeignKey(ModelA)
    value = models.CharField()

ModelB always belongs to a ModelA . ModelB始终属于ModelA I have a certain query that filters my ModelB s: 我有一个过滤我的ModelB的查询:

ModelB.objects.filter(value='foo')

From that QuerySet I need to retrieve the matching ModelA set. 从该QuerySet我需要检索匹配的ModelA集。 So I tried this: 所以我尝试了这个:

>>> ModelB.objects.filter(value='foo').values('a')
[{'a': 2}, {'a': 4}, {'a': 6}]

But as you can see that only got me the object id s. 但是正如您看到的那样,只有对象id才给我。 How can I fetch the objects themselves? 如何获取对象本身?

如果需要ModelAs,则必须要求提供ModelAs。

ModelA.objects.filter(modelb__value='foo')

Currently I have this little number: 目前我有这个小数字:

model_a_list = ModelB.objects.filter(value='foo').values('a')
ModelA.objects.filter(id__in=model_a_list)

Any better ways to do this would be much appreciated. 任何更好的方式做到这一点将不胜感激。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM