Ich möchte Benutzer in der Lage sein, nur ein bestimmtes Feld zu aktualisieren. zum Beispiel:django rest framework: limit Felder, die aktualisiert werden können
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
einmal die Snippet
erstellt, Benutzer sollte nur in der Lage sein title
zu aktualisieren Feld.
ich weiß, ich, dass durch so etwas wie dies erreichen können:
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
in Serializer-Klasse. aber ich möchte wissen, gibt es eine Möglichkeit, dass durchsuchbare api nur title
Feld in Bearbeitungsform anzeigen? und die Validierung für Felder, die nicht benötigt werden, überspringen?
Dank! Auf halbem Wege ... sind die 'read_only' Felder weg. aber sie sind weg in "POST" und "PUT" Formen :(. –