Django外键列替换

时间:2013-12-19 14:37:31

标签: django

我在数据库中有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

1 个答案:

答案 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的值(请注意双下划线以跟随关系)。