特定のフィールドを1つしか更新できないようにしたい。例えば:django rest framework:更新可能なフィールドを制限する
models.py
class Snippet(models.Model):
created = models.DateTimeField(auto_now_add=True)
title = models.CharField(max_length=100, blank=True, default='')
code = models.TextField()
linenos = models.BooleanField(default=False)
language = models.CharField(choices=LANGUAGE_CHOICES, default='python', max_length=100)
style = models.CharField(choices=STYLE_CHOICES, default='friendly', max_length=100)
class Meta:
ordering = ('created',)
serializer.py
class SnippetSerializer(serializers.ModelSerializer):
class Meta:
model = Snippet
fields = ('id', 'title', 'code', 'linenos', 'language', 'style')
views.py
class SnippetList(generics.ListCreateAPIView):
queryset = Snippet.objects.all()
serializer_class = SnippetSerializer
class SnippetDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Snippet.objects.all()
serializer_class = SnippetSerializer
作成Snippet
一度、ユーザーはtitle
を更新することができるはずですフィールド。シリアライザクラスの
serializers.py
def update(self, instance, validated_data):
"""
Update and return an existing `Snippet` instance, given the validated data.
"""
instance.title = validated_data.get('title', instance.title)
instance.save()
return instance
:
は、私はこのような何かでそれを達成することができます知っています。しかし私は知りたいです、閲覧可能なAPIが編集フォームのフィールドtitle
だけを表示する方法はありますか?必要でないフィールドの検証もスキップしますか?
感謝!途中で 'read_only'フィールドがなくなりました。しかし、彼らは 'POST'と' PUT'形式で行っています:(。 –