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

Python 将记录从第一个Django模型移动到第二个,然后将其从第一个模型中删除,python,django,django-models,django-views,Python,Django,Django Models,Django Views,我想在单击按钮时将记录从NewUsersmodel移动到PendingUsersmodel。移动后,应从NewUsers模型中删除(删除)记录 以下是模型: class NewUser(models.Model): user = models.OneToOneField(User, on_delete = models.CASCADE, default=1) newuser_name = models.CharField(max_length=50) newuser_co

我想在单击按钮时将记录从
NewUsers
model移动到
PendingUsers
model。移动后,应从
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()
要从新用户中删除它,请执行以下操作:

NewUser.objects.filter(id=id).delete()
它正在成功地将记录移动到挂起者。但一旦我从NewUser中删除它,它也会自动从PendingUser中删除

有人能帮我解决这个问题吗?关于如何成功实现这个目标?我需要更换我的Pendinguers型号吗


提前谢谢

您可以在
NewUser
列中添加
user\u status
字段,而不是采用这种方法,如下所示:

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\u status
的值:

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

我建议修改您的
NewUser模型
,并添加新的
Boolean
字段
is_pending

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)
    is_pending= models.BooleanField(max_length=10, default=True)

注意:-

您可以根据您对
待处理
字段的要求更改
默认值和逻辑



“on_delete=models.CASCADE”删除链接模型,因此是的,您需要更改模型。通常您可以更改用户状态(不删除),或者您需要将所有字段从新用户复制到挂起用户以避免丢失数据。@VelikiiNehochuha那么我应该如何设计模型?@VelikiiNehochuha我认为更改状态会奏效。谢谢@PrachiSharma谢谢你的回答。我做的和@VelikiiNehochuha在前面的评论中提到的一样。它现在正按照我的要求工作。谢谢你的回答。如前所述,它现在起作用了。
query_user = get_object_or_404(NewUser, id=id)
query_user.user_status = False
query_user.save()