How to delete delete OneToOneField of a model class in django
in my django app student_management_system, Student is connected to User by OneToOneField. if i delete a Student it gets deleted, but User (django's built in User) is not getting deleted, it still exists in database, ie. in auth_user of db.sqlite3. how to fix this. github code: https://github.com/anup30/student_management_system the problem is also written in problem.txt there.
Your code looks correct; on_delete=models.CASCADE should take care of that problem. Try overriding the delete() method on the Student model:
class Student(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone_number = models.CharField(max_length=15)
courses = models.ManyToManyField(Course)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
def __str__(self):
return f"{self.user.first_name} {self.user.last_name}"
def get_absolute_url(self):
return reverse('student-detail', kwargs={'pk': self.pk})
def delete(self, *args, **kwargs):
self.user.delete() # Delete related User
super().delete(*args, **kwargs)
Remember run migrations to apply changes.