Tôi có một mô hình Book với một chìa khóa nước ngoài để sử dụng (chủ sở hữu của cuốn sách):Cách tốt nhất để thêm các trường bổ sung cho django-nghỉ ngơi-framework ModelViewSet khi tạo
class Book(models.Model):
owner = models.ForiegnKey(User)
...
Tôi đã tạo một ModelViewSet cho sách trong đó cho thấy những cuốn sách thuộc sở hữu của người dùng đăng nhập:
class BookViewSet(viewsets.ModelViewSet):
model = Book
serializer_class = BookSerializer
def get_queryset(self):
return Book.objects.filter(owner=self.request.user)
Bây giờ để tạo ra một cuốn sách mới, tôi muốn lưu lĩnh vực người dùng với request.user, không phải với dữ liệu được gửi từ khách hàng còn lại (đối với bảo mật hơn). ví dụ:
def create(self, request, *args, **kwargs):
request.DATA['user'] = request.user
... (some code to create new Book from request.DATA using serialize class)
nhưng tôi gặp lỗi này: Ví dụ về QueryDict này là không thay đổi. (có nghĩa là request.DATA là một QueryDict không thể thay đổi và không thể thay đổi được)
Bạn có biết cách nào tốt hơn để thêm các trường bổ sung khi tạo đối tượng với khung còn lại django không?
cách đặt chủ sở hữu chỉ đọc ở lớp ModelSerializer? – Ali
Chỉ cần vượt qua read_only = True. Xem http://django-rest-framework.org/api-guide/fields.html # core-arguments –
Tôi sử dụng một ModelSerializer và các trường được xác định hoàn toàn từ các trường mô hình. – Ali