2017-09-24 95 views
1

我是Django的新手,我確信如果已經有人問過這個問題,請將它鏈接到我的網站上。如何從另一個模型已知字段值設置模型字段的默認值?

我會試着通過一個例子來解釋我的意思。我有一個餅乾,餅乾罐,在我的罐子裏,我有餅乾,巧克力圓(10塊餅乾),香草薄餅(15餅乾)等包。我做了一個產品的模型(餅乾包)這包含了每包最多的餅乾數量。

from Django.db import models 

class Product(models.Model): 
    barcode = models.CharField(max_length=200, primary_key=True) 
    quantity = models.IntegerField() 

我想擁有另一個包含實際包的模型。當你創建一個包與current_quantity默認爲產品的數量和每個餅乾被刪除可以減少直至0

class Pack(models.Model): 
    barcode = modes.ForeignKey(Product) 
    current_quantity = models.IntegerField() 

那麼,如何讓模型得到包current_quantity是相同產品的數量默認?

如果試圖在模型中做到這一點是錯誤的地方嘗試和嘗試這一點。我歡迎更好的DRY KIS解決方案。

謝謝你的時間。

回答

1

您可以覆蓋的模型中的保存()方法,這樣的:

class Pack(models.Model): 
    barcode = modes.ForeignKey(Product) 
    current_quantity = models.IntegerField() 

    def save(self, force_insert=False, force_update=False, using=None, 
     update_fields=None): 
     if not self.id: 
      self.current_quantity = self.barcode.quantity 
     return super(Pack, self).save() 

如果不是self.id檢查對象當前是否具有一個id這意味着如果對象是新的。所以self.current_quantity = self.barcode.quantity只會在創建對象時執行

相關問題