Skip to main content
 首页 » 编程设计

python之将记录从第一个 Django 模型移动到第二个,然后从第一个模型中删除它

2024年09月03日34三少

我想在单击按钮时将记录从 NewUsers 模型移动到 PendingUsers 模型。移动后,记录应该从 NewUsers 模型中移除(删除)。

这是模型:

class NewUser(models.Model): 
    user = models.OneToOneField(User, on_delete = models.CASCADE, default=1) 
    newuser_name = models.CharField(max_length=50) 
    newuser_company = models.CharField(max_length=100) 
    newuser_mobile = models.CharField(max_length=10) 
    newuser_designation = models.CharField(max_length=50)  
    newuser_image = models.ImageField(upload_to='userprofile_pics/users/', blank=True) 
 
    def __str__(self): 
        return self.user.email 
 
class PendingUsers(models.Model): 
    pendinguser = models.OneToOneField(NewUser, on_delete = models.CASCADE, default=1) 
 
    def __str__(self): 
        return self.pendinguser.newuser_name 

点击按钮,移动记录的代码是:

query_user = get_object_or_404(NewUser, id=id) 
pendingUser = PendingUsers() 
pendingUser.pendinguser = query_user 
pendingUser.save() 

并从 NewUsers 中删除它:

NewUser.objects.filter(id=id).delete() 

它正在成功地将记录移动到 PendingUsers。但是一旦我从 NewUser 中删除它,它也会自动从 PendingUser 中删除。

任何人都可以帮助我解决如何成功实现这一目标的问题吗?我需要更改我的 PendingUsers 模型吗?

提前致谢!

请您参考如下方法:

您可以将 user_status 字段添加到您的 NewUser 列,而不是采用这种方法,如下所示:

class NewUser(models.Model): 
    user = models.OneToOneField(User, on_delete = models.CASCADE, default=1) 
    newuser_name = models.CharField(max_length=50) 
    newuser_company = models.CharField(max_length=100) 
    newuser_mobile = models.CharField(max_length=10) 
    newuser_designation = models.CharField(max_length=50)  
    newuser_image = models.ImageField(upload_to='userprofile_pics/users/', blank=True) 
    user_status = models.CharField(max_length=10, default='new') 

现在单击按钮时,您只需更改 user_status 的值:

query_user = get_object_or_404(NewUser, id=id) 
query_user.user_status = 'pending' 
query_user.save()