如何在Django中进行操作

时间:2019-03-19 10:42:09

标签: python django django-models orm django-orm

class ModelA(models.Model):
    f = models.CharField(max_length=50)

class ModelB(models.Model):
    a = ForeignKey(ModelA)
    b = models.CharField(max_length=50)

我想在模型A中得到f并且我知道b。如何使用django orm做到这一点?

2 个答案:

答案 0 :(得分:0)

您可以使用以下查询之一:

a_models = ModelA.objects.filter(model_b__b=known_b_value)
for a in a_models:
    print(a.f)

b_models = ModelB.objects.filter(b=known_b_value).select_related('a')
for b in b_models:
    print(b.a.f)
严格来说,第二个查询中的

select_related并不是必须的;它仅用于在第一个查询中获取f值,而不是在每个循环项中获取一个附加查询。

答案 1 :(得分:0)

这是您要寻找的吗?

ModelA.objects.filter(b=value_matching_b).values('a__f').all()