2011-08-22 22 views
5

我有2個Django模型:如何閱讀一個ForeignKey的主鍵,而無需加載相應的項目?

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. 

這有可能訪問巴主鍵(我只需要此信息,不INFO1也不INFO2),而不產生另一個請求,也不使用「select_related()」?

我可以做一個:

print b.__dict__['a_id'] 

它的工作原理,但它似乎對我很醜陋:你有一個更好的辦法嗎?

回答

5

你不需要通過字典:b.a_id工作正常。

+0

也就是在我的情況非常重要,因爲我需要加載相關的行進行更新。 – lvella

相關問題