簡體   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