Как получить доступ к таблице postgres базы данных с помощью внешнего ключа из модели django - PullRequest
0 голосов
/ 15 марта 2012

Я хотел бы просто получить доступ к таблице базы данных, которая содержит внешний ключ.У меня есть 2 таблицы, созданные в Postgres 9.1.

Модели в 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 без FOREIGN KEY работает нормально.Нет проблем.Но я не могу назвать модель рабочий

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 голосов
/ 15 марта 2012

просто хотел бы иметь что-то действительно простое: имя 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
...