2014-06-17 46 views
0

當我嘗試通過Django querySet訪問外鍵值時,會出現一些問題。 我的模式是:Django Queryset不顯示外鍵值

class Server(models.Model): 
    server_id = models.AutoField(primary_key=True) 
    mnemonic = models.CharField(max_length=30, unique=True) 
    active = models.BooleanField(default=True) 
    server_status = models.ForeignKey(Status, default=4) 

    def __unicode__(self): 
     return unicode(self.mnemonic) 

class Status(models.Model): 
    status_id = models.AutoField(primary_key=True) 
    status_code = models.CharField(max_length=100) 

    def __unicode__(self): 
     return unicode(self.status_code) 

當我執行下一個代碼的所有運行正常,而且我可以得到FK關聯的值。

>>> print servers.models.Server.objects.get(server_id=3).server_status 
Unmanagmed - Reacheable 

但是,當我執行一個查詢集,我不能讓外鍵關聯的值:使用Django 1.6.1

>>> servers.models.Server.objects.filter(server_id=3).values("server_status") 
[{'server_status': 2L}] 

林。

任何想法怎麼可能得到FK值?

+1

有一個從你所示的模型沒有外鍵關係。 – karthikr

+0

你正試圖獲取關係,但沒有關係 – petkostas

回答

0

您應該修改服務器類有ForeignKey到狀態:

class Server(models.Model): 
    status = models.ForeignKey('Status') 
    # ... 
+0

好吧,這是一個複製/貼紙錯誤,現在它確定 – user3750102

0

我dont't看到在你的模型中定義的任何外鍵。

你需要一個關係模型中的狀態

class Status(models.Model): 
    status_id = models.AutoField(primary_key=True) 
    status_code = models.CharField(max_length=100) 
    server = models.ForeignKey(Server, 
           verbose_name='Server', 
           help_text='Select Server', 
           on_delete=models.PROTECT) 

    def __unicode__(self): 
     return unicode(self.status_code) 
+0

好的,這是一個複製/貼紙錯誤 – user3750102