我是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解决方案。
感谢您的时间。
答案 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 只会在创建对象时执行