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

Django 如何在不加载相应项的情况下读取外键的主键?,django,models,Django,Models,我有两款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)

我有两款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']

它可以工作,但在我看来非常难看:你有更好的方法吗?

没有。

你不需要通过dict:
b.a\u id
工作正常。

如果你想动态地做这件事(就像我做的那样):


这在我的例子中非常重要,因为我需要加载相关行以进行更新。
related_field = 'a'
related_id = getattr(obj, f'{related_field}_{A._meta.pk.name}')