我有一个 Book 模型,它对用户(书的所有者)有一个外键:
class Book(models.Model):
owner = models.ForiegnKey(User)
...
我为 Book 创建了一个 ModelViewSet,它显示了登录用户拥有的书籍:
class BookViewSet(viewsets.ModelViewSet):
model = Book
serializer_class = BookSerializer
def get_queryset(self):
return Book.objects.filter(owner=self.request.user)
现在要创建一本新书,我想用 request.user 保存用户字段,而不是从其余客户端发送的数据(为了提高安全性)。例如:
def create(self, request, *args, **kwargs):
request.DATA['user'] = request.user
... (some code to create new Book from request.DATA using serialize class)
但我收到了这个错误:这个 QueryDict 实例是不可变的。(意味着 request.DATA 是不可变的 QueryDict 并且不能更改)
在使用 django rest 框架创建对象时,您知道添加其他字段的更好方法吗?