我在数据库中有A类,例如:
ID COL1 COL2 COL3
1 a b c
数据库中的B列:
ID COL1 COL2 FK_COL
1 d e 1
2 dd ee 1
3 ddd eee 1
B类具有A类的外键。如何创建查询以从表B获取外键为1的所有对象,而不是A中的ID而不是来自A的COL1。
ID COL1 COL2 FK_COL
1 d e a
2 dd ee a
3 ddd eee a
答案 0 :(得分:3)
如果我正确理解您的问题,您可以使用ForeignKey.to_field
。来自the documentation:
ForeignKey.to_field
关系所涉及的相关对象上的字段。默认情况下,Django使用相关对象的主键。
编辑:对于评论中的其他问题,您可以执行以下操作:
b_obj = B.objects.filter(a=1).values('colX')
或者,如果您来自A对象:
a_obj = A.objects.get(pk=1)
b_objs = a_obj.b_subset.values('colX')
colX
是您要显示的列,b_subset
将取决于相关模型的名称。如果你做dir(a_obj)
,那将是显而易见的,但它应该是模型的名称加上“_set”。
第二次编辑:values
也可以关注关系,所以为了回答最终你的问题,你会做类似的事情:
b_objs = B.objects.filter(a=1).values('COl1', 'COL2', 'FK_COL__COL1')
这可以从A表中获取COL1的值(请注意双下划线以跟随关系)。