0
私は特別な削除があるので、単にDELETEメソッドを使用することはできません。redifineメソッドDjango Rest Frameworkのmodelviewsetで削除または破棄します
これはモデルです:
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)
ポイントは、私はicon
、id
とpreview_title
除いて削除する必要があり、 "タイプ" はmessage
、facebookpost
またはinfo
あるとき、あります。これまでは、PUTを使用することができました。しかし... "タイプ"がuserdefined
の場合、通常の削除のようにすべてを削除する必要があります。
私はそれがどうやってできるのか分かりません。私はおそらく.destroy()
のようなものを使用してそれを上書きできると思った。たとえば、perfom_create()
またはget_queryset()
を無効にする方法はわかっていますが、削除はありません。
私の見解はそうなります
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
はたぶん誰かがそれを行う方法を知っています。