我做了很多搜索,但找不到合适的方法。 我想将一些模型对象数据复制到另一个模型对象数据。 我在下面添加了我的代码。我有3个型号。你可以看到我有一个FK, 与收据字段相关的收据模型。当我想添加Receiptitem对象时,我想复制金额,增值税和total_amount。 我没有解决保存方法。
用户将添加产品和收据。然后,当用户尝试选择ReceiptItem收据和产品下拉列表时,他将选择他想要的对象,其他内容将自动获取。我想这样做。
class Receipt(models.Model):
amount = models.DecimalField(max_digits=5, decimal_places=2)
vat = models.DecimalField(max_digits=5, decimal_places=2)
total_amount = models.DecimalField(max_digits=5, decimal_places=2)
def __str__(self):
return str(self.total_amount)
class ReceiptItem(models.Model):
receipt = models.ForeignKey('Receipt', on_delete=models.CASCADE )
product = models.ForeignKey('Product', on_delete=models.CASCADE)
amount = models.DecimalField(max_digits=5, decimal_places=2)
vat = models.DecimalField(max_digits=5, decimal_places=2)
vat_rate = models.DecimalField(max_digits=5, decimal_places=2)
sub_total = models.DecimalField(max_digits=5, decimal_places=2)
name = models.CharField(max_length=200)
class Product(models.Model):
name = models.CharField(max_length=200)
vat_rate = models.DecimalField(max_digits=5, decimal_places=2)
amount = models.DecimalField(max_digits=5, decimal_places=2)
def __str__(self):
return self.name
答案 0 :(得分:0)
如果您希望在保存ReceiptItem
后复制数据,则可以重载此模型的save
功能:
class ReceiptItem(models.Model):
# your fields here
def save(self, *args, **kwargs):
self.vat = self.receipt.vat
# copy the other data you need here
# the line below calls Model.save() which commits
# your changes to the database
super(ReceiptItem, self).save(*args, **kwargs)
如果在将对象保存到数据库之前需要值,则另一个选项可以是设置ReceiptItem.__init__()
中的值。