如何使用django模型中的外键访问数据库postgres表

时间:2012-03-15 01:29:04

标签: django postgresql django-models django-views

我只想访问一个包含外键的数据库表。 我在postgres 9.1中创建了2个表。

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

在没有FOREIGN KEY的情况下调用模型 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'>

如果我使用FOREIGN KEY定义注释掉以下行,则它可以正常工作

#fk_f_name=models.ForeignKey(bfirma)

我想要一些非常简单的东西:bfirma和bworker的名字

select bfirma.f_name, bworker.w_name from bfirma, bworker
where bfirma.f_id = bworker.fk_f_id

更新:昨天我的电脑刚刚冻结;我不得不重新启动。在那之后我创建了一个新的数据库并且突然之间它已经工作了。不知何故,它现在可以使用ForeignKey处理该行...

1 个答案:

答案 0 :(得分: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
相关问题