Tôi muốn người dùng chỉ có thể cập nhật một trường cụ thể. ví dụ:khung thời gian còn lại django: các trường giới hạn có thể được cập nhật
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
khi Snippet
tạo ra, người sử dụng nên chỉ có thể cập nhật title
cánh đồng.
tôi biết tôi có thể đạt được điều đó bằng một cái gì đó như thế này:
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
trong lớp serializer. nhưng tôi muốn biết, có cách nào mà api có thể duyệt chỉ hiển thị trường title
trong biểu mẫu chỉnh sửa không? và cũng bỏ qua xác nhận cho các trường không bắt buộc?
cảm ơn! một nửa ở đó ... các trường 'read_only' đã biến mất. nhưng chúng đã biến mất trong các biểu mẫu «POST' và' PUT': ( –