2015-06-09 64 views
0

兩個班的models.py值:如何獲得一個外鍵

class Purchase(models.Model): 
    book_id = models.CharField(max_length=20, primary_key=True) 
    storage_id = models.CharField(max_length=20) 
    def __str__(self): 
     return self.book_id 

class Delivery(models.Model): 
    book_id = models.CharField(max_length=20, primary_key=True) 
    storage_id = models.ForeignKey('Purchase', editable=True) 
    def __str__(self): 
     return self.book_id 

我使用下面的代碼來獲得在交付storage_id值的形式被保存後:

@receiver(post_save, sender = Delivery) 
def removeProducts(sender, instance, **kwargs): 
    print(instance.storage_id) 

問題是,我得到的不是Delivery.storage_id,它是Purchase.book_id。如何在不更改__str__函數的情況下獲得Delivery.storage_id的值?

回答

3

首先,不要調用您的ForeignKey字段foo_id。這不是一個ID,它是實際的對象。我也不確定爲什麼該字段被稱爲storage,但它鏈接的模型是Purchase。它應該是:

purchase = models.ForeignKey('Purchase', editable=True) 

現在,我們已經消滅之間有什麼目標,什麼是一個領域,我們可以簡單地按照關係的困惑:

print(instance.purchase.storage_id)