Reputation: 341
I want to move a record from NewUsers
model to PendingUsers
model on the button click. After moving, the record should be removed(deleted) from NewUsers
model.
Here's the models:
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
On Button click, the code to move the record is:
query_user = get_object_or_404(NewUser, id=id)
pendingUser = PendingUsers()
pendingUser.pendinguser = query_user
pendingUser.save()
And to delete it from NewUsers:
NewUser.objects.filter(id=id).delete()
It is successfully moving the record to PendingUsers. But as soon as I'm deleting it from NewUser, it is automatically deleted from PendingUser as well.
Can anybody help me out with this about how to achieve this successfully? Do I need to change my PendingUsers model?
Thanks in advance!
Upvotes: 2
Views: 283
Reputation: 1072
I would suggest modify your NewUser model
and add new Boolean
field 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()
NOTE :: -
you can change the default values and logic
according to your requirement for is_pending
field.
Upvotes: 1
Reputation: 16032
Instead of taking that approach, you can add a user_status
field to your NewUser
column, like this:
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')
Now when the button is clicked, you simply change the value of user_status
:
query_user = get_object_or_404(NewUser, id=id)
query_user.user_status = 'pending'
query_user.save()
Upvotes: 1