2012-03-15 61 views
0

我只想简单地访问包含外键的数据库表。 我在postgres 9.1中创建了2个表格。如何使用django模型的外键访问数据库postgres表

内Django的型号有:

class bfirma(models.Model): 
class Meta: 
    db_table="bfirma" 

f_id= models.IntegerField(primary_key=True) 
f_name = models.TextField() 

class bworker(models.Model): 
class Meta: 
    db_table="bworker" 

w_id = models.IntegerField(primary_key=True) 
w_name = models.TextField() 
fk_f_id=models.ForeignKey(bfirma) 

这是它的外观在表:

bfirma(table) 
f_id(pk)|f_name 
1  BMW 
2  Benz 

bworker(table) 
w_id(pk)|w_name|fk_f_id(fk) 
1  WorkerA 1 
2  WorkerB 1 
3  WorkerC 2 

调用模型bfirma没有外键工作正常。没问题。但我不能调用模型bworker

bf= bfirma.objects.using(db).filter(f_name='BMW').values() WORKING FINE 
bw = bworker.objects.using(db).all().values() ERROR:= Unable to get repr for <class 'django.db.models.query.ValuesQuerySet'> 

如果我注释掉与外键定义以下行,它的工作原理

#fk_f_name=models.ForeignKey(bfirma) 

我只是想有一些真的很简单:昨天我的电脑强制:bfirma和bworker

​​

更新的名称冻结;我必须重新调整。之后,我创建了一个新的数据库,并且很快就开始工作。不知怎的,它现​​在可以处理与ForeignKey的行...

+0

Offtopic的:请为您的类(包括模型)在CamelCase中,并尝试为所有变量使用可读的名称。 – ilvar 2012-03-15 01:48:00

+0

并检查您发布的代码 - 在您的代码中,bw不能抛出有关ValuesQuerySet的错误,因为它不使用values()。 – ilvar 2012-03-15 01:50:25

+1

尝试在bworker.objects.using(db).all()]中尝试启动时没有值():[(bw.w_name,bw.bfirma.f_name)bw) – ilvar 2012-03-15 01:52:16

回答

0

只想有东西真的很简单:名称bfirma 和bworker

bw = bworker.objects.get(pk=1) # fetch bworker with primary key 1 
print bw.fk_f_id.f_name # f_name of bfirma for this bworker 
+0

'bw = bworder.objects.select_related()。get(pk = 1)' – 2012-03-15 14:36:30