2012-03-15 21 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