2011-08-11 89 views
0

我是Django的新手,目前已将现有数据库方案定义为Django模型。告诉Django按需使用整数作为外键

我有一个中央储存库来存储样值:

(some_qualifier_id_1, some_qualifier_id_2, measure_id, value) 

的值是数据库明智的整数。但是它可以引用分类数据,在这种情况下,我想将它链接到另一个表,该表给我提供了额外的信息,例如应该显示的字符串,而不是数字,订购信息。

我可以告诉Django使用值作为外键创建表的链接有时

更新: 使用int来获得类别 - 是的,这就是我所做的。然而,据我所知,模型层的重点是能够告诉Django表之间的关系。只要使用int并使用它来查找内容就意味着将它们一起黑掉,而不告诉Django我在做什么,这可能意味着我必须手动生成SQL,而不是在某个时候使用模型层。用例:按类别表中的某个排序字段排序类别值。

+0

对我来说这是不真实的。实现它的方式 - 从整型字段获取id,然后使用它从模型中获取对象。 – Dracontis

+0

是的我试图找出如果这是正确的事情要做,因为它不是那样的感觉。我相应地更新了我的帖子。 – Nicolas78

回答

1

如果measure_id值在语义上是一个外键,所以每个值必须是是度量表中的某些内容的索引,然后将其声明为这样,并且每个事物将单独在一起。

如果measure_id值不是一个外键,您可以标注您的需求,结果集,使用

MyModel.objects.filter(**your_filters).extra(select={ 
    'measure_name': 
    'SELECT measure.name FROM measure WHERE mymodeltable.measure_id = measure.id' 
}) 

然后您检索到的对象将有一个“的measure_name”与联接的列属性。

+0

非常感谢,后者是我一直在寻找的! – Nicolas78