在我的 ModelViewSet 中,我试图排除我的租户字段以防止用户看到租户 ID(来自 django-simple-multitenant)。但是,我无法开发通用 ModelSerializer,因为我总是需要在 ModelSerializer 类中定义模型 Meta。我的有效源代码(非通用)如下。我想实现以下任一选项:
序列化器通过获取实际的类模型来工作,而无需在序列化器的 Meta 类中指定模型
在 DEFAULT_MODEL_SERIALIZER_CLASS 中设置我的序列化器,并让它工作(同样没有在序列化器的 Meta 类中指定模型
它在下面运行良好,但是当我在 DEFAULT_MODEL_SERIALIZER_CLASS 中分配序列化程序时,它似乎不起作用。
class ExcludeTenantSerializer(serializers.ModelSerializer):
class Meta:
model = Product
exclude = ('tenant', )
class ProductViewSet(viewsets.ModelViewSet):
model = Product
ordering = ('id', )
serializer_class = ExcludeTenantSerializer
def get_queryset(self):
tenant = get_current_tenant()
if tenant:
return self.model.objects.filter(tenant=tenant)
else:
return self.model.objects.none()