如何处理不可变所有权,例如:
一旦用户创建类似
{headline: 'test', owner: [user_id], body: 'test'}
之类的对象,但在此之后,__update__
上只有正文字段可变。
波纹管是一些解决方案,我不确定哪个更好:
view_set
get_serlializer_class
上使用不同的序列化程序,具体取决于request.method
IsOwnerOrReadOnly
,但没有字段permission
谢谢。
答案 0 :(得分:1)
get_serializer
似乎是一个完美的地方,您可以访问请求和序列化程序:
class MyAwesomeViewSet(viewsets.ModelViewSet):
# my attributes
def get_serializer(self, instance=None, data=None,
files=None, many=False, partial=False):
s = super(MyAwesomeViewSet, self).get_serializer(instance, data, files, many, partial)
if self.request.method == 'PUT':
s.fields['headline'].read_only = True
s.fields['owner'].read_only = True
return s
如果您发布只读数据,这不会给您带来任何错误,但它实际上不会更新数据库。