【问题标题】:move and copy table data to another table data将表数据移动并复制到另一个表数据
【发布时间】:2018-10-19 05:30:06
【问题描述】:

我们有 3 个表(模型)A、B 和 c。表“A”有数据,如果我们删除“A”的特定表数据,那么删除的数据我想自动保存在表“B”中,并且 如果我们在表“C”中添加数据,我们希望数据也自动添加到表“A”中。

from django.db import models

class Stock(models.Model):

    product_name = models.CharField(max_length=100,blank=False)
    quantity = models.IntegerField()
    price = models.FloatField()
    status = models.CharField(max_length=10, default='AVAILABLE')

    def __str__(self):
        return 'Product name:{0} Quantity:{1} Price:{2} Status:{3} '.format(self.product_name, self.quantity, self.price, self.status)
class Sale(models.Model):

    product_name = models.CharField(max_length=100, blank=False)
    quantity = models.IntegerField()
    price = models.FloatField()
    status = models.CharField(max_length=10, default='SOLD')

    def __str__(self):
        return 'Product name:{0} Quantity:{1} Price:{2} Status:{3}'.format(self.product_name, self.quantity, self.price, self.status)
class Purchase(models.Model):

    product_name = models.CharField(max_length=100,blank=False)
    quantity = models.IntegerField()
    price = models.FloatField()
    status = models.CharField(max_length=10,default='Purchased')

    def __str__(self):
        return 'Product name:{0} Quantity:{1} Price:{2} Status:{3}'.format(self.product_name,self.quantity, self.price, self.status)

请帮助我。 谢谢你

【问题讨论】:

    标签: python django model copy move


    【解决方案1】:

    您可以像这样覆盖Stockdelete 方法和覆盖Purchasesave 方法:

    class Stock(models.Model):
    
        product_name = models.CharField(max_length=100,blank=False)
        quantity = models.IntegerField()
        price = models.FloatField()
        status = models.CharField(max_length=10, default='AVAILABLE')
    
        def delete(self):
            Sale.objects.create(product_name=self.product_name, quantity=self.quantity, price=self.price, status=self.status)
            super().delete()
    
    class Purchase(models.Model):
    
        product_name = models.CharField(max_length=100,blank=False)
        quantity = models.IntegerField()
        price = models.FloatField()
        status = models.CharField(max_length=10,default='Purchased')
    
        def save(self):
            if not self.pk:
                Stock.objects.create(product_name=self.product_name, quantity=self.quantity, price=self.price, status=self.status)
            super().save()
    

    【讨论】:

    • 模型'sale'怎么样?
    • Sale 不需要修改,因为它没有触发操作的任何内容。请注意,在Stockdelete 方法中,它会创建一个新的Sale 对象,因为这就是您希望触发器按照您的要求工作的方式:“如果我们删除'A' 的特定表数据,那么我想要的已删除数据自动保存在表'B'中”。
    • 谢谢先生您解决了我的问题。 django 管理端工作正常,但不是我的实际 Web 应用端..如果我们删除库存项目,但删除的项目不会保存在销售中。
    • 您的实际网络应用程序如何删除Stock?是通过Stock.objects.delete(),还是通过单个Stock对象的delete()方法?
    • 个别删除方法。我为所有模型 def delete_stock(request, pk): Stock.objects.filter(id=pk).delete() items = Stock.objects.all() context = { 'items': items } return render(请求,'index1.html',上下文)
    猜你喜欢
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2014-03-20
    • 1970-01-01
    相关资源
    最近更新 更多