如何在不加载相应项的情况下读取ForeignKey的主键?

Eri*_*ric 7 django models

我有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)
Run Code Online (Sandbox Code Playgroud)

如果我做 :

b = B.objects.get(id = n), it generates one database request.
Run Code Online (Sandbox Code Playgroud)

如果我做

print b.a.pk : it generate another request.
Run Code Online (Sandbox Code Playgroud)

是否可以访问ba主键(我只需要此信息,而不是info1或info2)而不生成另一个请求,也不使用'select_related()'?

我可以做一个:

print b.__dict__['a_id']
Run Code Online (Sandbox Code Playgroud)

它有效,但在我看来非常难看:你有更好的方式吗?

Dan*_*man 7

你不需要通过dict:b.a_id工作正常.