Как прочитать первичный ключ ForeignKey, не загружая соответствующий элемент? - PullRequest
7 голосов
/ 22 августа 2011

У меня есть 2 модели Django:

class A(models.Model):
    uniq_name = models.CharField(max_length=30,primary_key=True)
    info1 = models.CharField(max_length=30)     
    info2 = models.CharField(max_length=30)

class B(models.Model):
    a = models.ForeignKey(A)
    info3 = models.CharField(max_length=30)     
    info4 = models.CharField(max_length=30)

Если я это сделаю:

b = B.objects.get(id = n), it generates one database request.

Если я делаю

print b.a.pk : it generate another request.

Возможно ли получить доступ к первичному ключу b.a (мне нужна только эта информация, а не info1 или info2) без генерации другого запроса или использования select_related () '?

Я мог бы сделать:

print b.__dict__['a_id']

Это работает, но мне кажется очень уродливым: у тебя есть более хороший способ?

Ответы [ 2 ]

7 голосов
/ 22 августа 2011

Вам не нужно проходить через диктовку: b.a_id отлично работает.

0 голосов
/ 22 августа 2011
...