如何从另一个模型已知字段值设置模型字段的默认值?

时间:2017-09-24 10:27:20

标签: django django-models

我是Django的新手,我确信之前已经问过这个问题,如果有问题请将我链接进去。

我会尝试通过一个例子来解释我的意思。

我有一个饼干/饼干罐,在我的罐子里,我有一堆饼干,巧克力圈(10个饼干),香草薄饼(15个饼干)等。我已经制作了一个产品模型(饼干包)包含每包饼干的最大数量。

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

我想要另一个包含实际包的模型。当你创建一个包含current_quantity的包默认产品的数量,并且当每个饼干被移除时,它可以减少到0。

render() {
    console.log("first log");
    return (
        <View onLayout={e => console.log("second log")}>
...

那么我如何让模型默认将Pack current_quantity与Product的数量相同?

如果尝试在模型中执行此操作,则尝试尝试此操作是错误的。我欢迎更好的DRY KIS解决方案。

感谢您的时间。

1 个答案:

答案 0 :(得分:1)

您可以覆盖打包模型的save()方法,如下所示:

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