2017-09-24 101 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只会在创建对象时执行

相关问题