Ich habe eine spezielle löschen, so dass ich nicht einfach DELETE-Methode verwenden kann.redifine Methode löschen oder zerstören in Modelviewset von Django Rest Framework
dies ist das Modell:
class PersonalDetail(models.Model):
icon = models.URLField(_('icon'), max_length=500, blank=True, default='')
date = models.DateTimeField(_('date'), auto_now_add=True)
checked = models.BooleanField(_('checked'), blank=True, default=False)
priority = models.CharField(_('priority'), blank=True, max_length=1)
preview_title = models.CharField(_('preview_title'), blank=True, max_length=100)
preview_text = models.TextField(_('preview_text'), blank=True)
preview_name = models.CharField(_('preview_name'), blank=True, max_length=100)
type = models.CharField(_('type'), choices=PERSONAL_DETAILS_INFO, default='Info', max_length=100, blank=False)
content = JSONField(_('content'))
user_id = models.ForeignKey(User, related_name='userId', on_delete=models.CASCADE)
Der Punkt ist, wenn der "Typ" message
ist, facebookpost
oder info
, dann muss ich außer icon
, id
und preview_title
löschen. Bis jetzt konnte ich irgendeine Art von PUT verwenden. Aber ... wenn der "Typ" userdefined
ist, dann muss ich alles löschen, wie ein normales Löschen.
Also, ich habe keine Ahnung, wie ich es machen kann. Ich dachte, dass ich vielleicht etwas wie .destroy()
verwenden und es überschreiben könnte. Zum Beispiel kann ich perfom_create()
oder get_queryset()
außer Kraft setzen, aber nichts mit löschen.
Meine Ansicht sieht so:
class PersonalDetailViewSet(viewsets.ModelViewSet):
queryset = PersonalDetail.objects.all()
serializer_class = PersonalDetailSerializer
def get_queryset(self):
return PersonalDetail.objects.filter(Q(user_id=self.request.user))
def perform_create(self, serializer):
serializer.save(user_id=self.request.user)
# Not delete icon, id, preview_title
Vielleicht hat jemand weiß, wie es zu tun.