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

2024-10-01 00:22:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在单击按钮时将记录从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()

它正在成功地将记录移动到挂起用户。但一旦我从NewUser中删除它,它也会自动从PendingUser中删除。你知道吗

有人能帮我解决这个问题吗?关于如何成功地实现这个目标?我需要改变我的吊灯型号吗?你知道吗

提前谢谢!你知道吗


Tags: 模型selfidmodels记录deletelengthmax
2条回答

您可以向NewUser列添加一个user_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_status的值:

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

我建议修改NewUser model并添加新的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)

query_user = get_object_or_404(NewUser, id=id)
query_user.user_status = False
query_user.save()  

注:-

您可以根据对is_pending字段的要求更改default values and logic。你知道吗


相关问题 更多 >