Django方法update_or_create增加值的麻烦

时间:2017-04-19 19:41:07

标签: python django

我有一个Django模型:

class Item_received_log(models.Model):
   name = models.CharField(max_length=250)
   quantity = models.FloatField(default=1)

class Inventory (models.Model):
   name = models.CharField(max_length=250)
   quantity = models.FloatField(default=1)

我希望每次使用匹配名称发布 Item_received_log 的新项目时,都会更新 Inventory.quantity 。我不确定它是否正确,但我已决定覆盖Item_received_log类的保存方法,以便在保存时更新库存清单:

def save(self, *args, **kwargs):
    obj, created = Inventory.objects.update_or_create(
             name=self.name,
             defaults = {'quantity':(quantity + self.quantity)})
    super(Item_received_log, self).save(*args, **kwargs)

回报: 名称错误在/ admin / accountable_persons / item_received_log / 17 /更改/ 全球名称'数量'未定义

如何解决我的问题或提出更好的解决方案?

1 个答案:

答案 0 :(得分:2)

如果我们可以简单地将function smaller(arr) { var out = [0]; var len = arr.length; for (var i=len - 2; i >= 0; i--) { var c = 0; for (var j = i + 1; j < len; j++) { if (arr[i] == arr[j]) { c += out[j - i - 1]; break; } else if (arr[i] > arr[j]) { c++; } } out.unshift(c); } return out; } var testArr = [1,5,2,7,44,878,1,22,999,222,1,1,1,1,1,1,1,1,1,1,1,1,1]; alert(smaller(testArr).join(",")); 表达式放入F()的默认部分来完成所有魔术,那会更容易,但请求此功能的issue仍然是开。

但是,您现在可以使用更详细的方法:

update_or_create