>
>
>
>
>     class Doctor(models.Model):
>
>         name = models.CharField(max_length=35)
>
>         username = models.CharField(max_length=15)
>
>
>
>     class DoctorProfilePic (models.Model):
>
>         name = models.CharField(max_length=255, blank=True)
>
>         pic = StdImageField(upload_to="data/media/%Y/%m/%d", blank=True,
> variations={
>
>             'large': (600, 400),
>
>             'thumbnail': (150, 140, True),
>
>             'medium': (300, 200),
>
>         })
>
>         doctor = models.OneToOneField(Doctor, blank=True,
>
>                                 null=True, on_delete=models.SET_NULL,
> related_name="profile_pic")
>
>
>

Setting on_delete to SET_NULL doesn't make much sense here, I think. This
implies that if a doctor is deleted, the profile pic will be preserved,
with the FK to doc being set to NULL in db (which doesn't seem desirable).
I think here CASCADE should work good and will not have the issue that the
OP is facing.






>
>
> …and after saying all that, I wouldn’t make a separate model for the
> profile picture.  This is what I would do:
>
>     class Doctor(models.Model):
>
>         name = models.CharField(max_length=35)
>
>         username = models.CharField(max_length=15)
>
>         profile_pic = StdImageField(upload_to="data/media/%Y/%m/%d",
> blank=True, variations={
>
>             'large': (600, 400),
>
>             'thumbnail': (150, 140, True),
>
>             'medium': (300, 200),
>
>         })
>
>
>
>
>
>
>
> *From:* django-users@googlegroups.com [mailto:
> django-users@googlegroups.com] *On Behalf Of *Joel Mathew
> *Sent:* Tuesday, November 27, 2018 12:24 PM
> *To:* django-users@googlegroups.com
> *Subject:* Unexpected behavior on delete of model
>
>
>
> Situation:
>
>
>
> I have two Model classes, in two different apps which are part of the same
> project. class doctor defined in appointments.models is a set of attributes
> associated with a doctor, like name, username, email, phone etc. class
> DoctorProfilePic is a Model defined in clinic.models, which has a
> StdImageField which stores images. doctor has a One to One mapping to
> DoctorProfilePic.
>
>
>
>     class doctor(models.Model):
>
>         docid = models.AutoField(primary_key=True, unique=True) # Need
> autoincrement, unique and primary
>
>         name = models.CharField(max_length=35)
>
>         username = models.CharField(max_length=15)
>
>         ...
>
>         profilepic = models.ForeignKey(DoctorProfilePic, blank=True,
> null=True, on_delete=models.CASCADE)
>
>         ...
>
>
>
>     class DoctorProfilePic (models.Model):
>
>         id = models.AutoField(primary_key=True, unique=True)
>
>         name = models.CharField(max_length=255, blank=True)
>
>         pic = StdImageField(upload_to="data/media/%Y/%m/%d", blank=True,
> variations={
>
>             'large': (600, 400),
>
>             'thumbnail': (150, 140, True),
>
>             'medium': (300, 200),
>
>         })
>
>         doc = models.ForeignKey('appointments.doctor', blank=True,
>
>                                 null=True, on_delete=models.CASCADE)
>
>
>
> Anticipated response:
>
>
>
> When user selects one of the profile pics from a selection box, and clicks
> Delete, django is supposed to delete the picture from the collection of
> pictures uploaded by the doctor.
>
>
>
> Problem:
>
>
>
> When the delete button is clicked, django deletes both the picture and the
> doctor, instead of just the former.
>
>
>
> Code:
>
>
>
>     def removeprofpic(request, docid):
>
>         docid = int(docid)
>
>         if not IsOwnerorSuperUser(request, docid):
>
>             return HttpResponse("You dont have permissions to do this.")
>
>         doc = doctor.objects.get(docid = docid)
>
>         if request.method == 'POST':
>
>             print(request.POST)
>
>             picid = int(request.POST.get('profilepic'))
>
>             print(f'doc:{doc} picid:{picid}')
>
>             pic = DoctorProfilePic.objects.get(doc = doc, id =picid)
>
>             pic.delete()
>
>             msg = f"Successfully removed profile picture."
>
>         else:
>
>             msg = "Not a valid POST"
>
>         return HttpResponse(msg)
>
>
>
> Now I'm guessing my problem is in defining the on_delete=models.CASCADE?
> Can someone explain what I've done wrong?
>
> Sincerely yours,
>
>  Joel G Mathew
>
>
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/CAA%3Diw__vyDXxz6sfmcS_Bcy8M5cANmB7mwmTMwS4rfF96bJmbg%40mail.gmail.com
> <https://groups.google.com/d/msgid/django-users/CAA%3Diw__vyDXxz6sfmcS_Bcy8M5cANmB7mwmTMwS4rfF96bJmbg%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-users+unsubscr...@googlegroups.com.
> To post to this group, send email to django-users@googlegroups.com.
> Visit this group at https://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/360df97b2ca14af69267bd6e98436ac6%40iss2.ISS.LOCAL
> <https://groups.google.com/d/msgid/django-users/360df97b2ca14af69267bd6e98436ac6%40iss2.ISS.LOCAL?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/CAL1UH0s7vMZ%3DWrU%2BJCwVMVzeQWkfAUM9p_KCgfhDQX7Nuv-GSQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to