繁体   English   中英

如何基于Django中的属性值将模型实例复制到另一个模型

[英]How to copy a model instance to another model based on attribute value in Django

仅当且仅当Tasks对象中的progress属性设置为“ completed”时,我才想将模型实例从Tasks类复制到CompletedTasks类中。 我想从Tasks类中删除该对象。 当用户编辑任务并输入完成进度时,我如何设置它自动执行此操作

我尝试了几种不同的方法,但是我不确定该如何进行。 下面的函数completedTasks(self,id)是我目前拥有的,但是它什么也没做。

我在views.py中也有一个create和update任务功能,将所需的功能放在这里而不是在models.py中有意义吗?

class Progress(models.Model):
    level =  models.CharField(max_length=30)

class Tasks(models.Model):
    progress = models.ForeignKey(Progress, max_length=20, on_delete=models.CASCADE)

def  completedTasks(self, id):
    instance = Tasks.objects.get(pk = id)

    if(instance.progress == "completed"):
        temp = CompletedTasks()
        temp = instance 
        temp.save()
        instance.delete()

class CompletedTasks(Tasks):

您的看法可以像这样

def  completedTasks(self, id):
    instance = Tasks.objects.get(pk = id)

    if(instance.progress == "completed"):
        temp = CompletedTasks(**instance.__dict__)
        temp.id = None # to force adding new record
        temp.save()
        instance.delete()

但是从设计的角度来讲,您无需将Task移到completeTask上,基于状态的过滤就足够了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM