所有者のみが変更できる場所モデルがあります
class Location(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=100)
address = models.TextField()
これは API ロケーション シリアライザーです
class LocationSerializer(serializers.ModelSerializer):
class Meta:
model = Location
fields = ('user', 'name', 'address',)
問題は、ユーザーをリクエストユーザーにしたいことです
実際にはビューセットのcreateメソッドを上書きしていますが、それは最善の解決策ではないと思います
class LocationViewSet(mixins.CreateModelMixin,
mixins.RetrieveModelMixin,
mixins.ListModelMixin,
GenericViewSet):
model = Location
serializer_class = LocationSerializer
def get_queryset(self):
return self.model.objects.filter(user=self.request.user)
def create(self, request, *args, **kwargs):
data = request.DATA.copy()
data.update({'user':unicode(self.request.user.id)})
serializer = self.get_serializer(data=data, files=request.FILES)
if serializer.is_valid():
self.pre_save(serializer.object)
self.object = serializer.save(force_insert=True)
self.post_save(self.object, created=True)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED,
headers=headers)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
提案をありがとう