Chcę, aby użytkownicy mogli aktualizować tylko jedno konkretne pole. na przykład:Struktura reszta django: pola limitów, które można aktualizować
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
raz Snippet
stworzonego, użytkownik powinien być tylko w stanie zaktualizować title
pole.
wiem, że można to osiągnąć przez coś takiego:
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
w klasie serializer. ale chcę wiedzieć, czy istnieje sposób, w jaki można wyświetlać tylko pole api show-only title
w formularzu edycji? a także pominąć sprawdzanie poprawności dla pól, które nie są wymagane?
dzięki! w połowie drogi ... pola 'read_only' zniknęły. ale nie ma ich w formularzach "POST" i "PUT" :(. –