我们正在构建中间件,并且有以下情况:我们有不同的用户,每个用户都有自己的数据库(不由我们管理),每个人都有某种“订单”表。
我们构建了一个API终结点,用户可以在其中创建订单,将缓冲区链接到订单,并根据创建订单的用户将其发送到正确的数据库。这基本上意味着我们拥有一个“中间件”模型Order,并且在处理过程中将对Order进行解析以匹配用户数据库的结构并在其数据库中创建它。 现在,我们要从其数据库中检索订单,并将其显示在我们的API端点上。我们有非托管模型供用户检索订单,一种称为AppOrder。但是由于我们的端点使用中间件Order模型,所以当用户为X时,我们不能简单地返回AppOrder.objects.all(),因为序列化程序是为Order而非AppOrder而构建的。
class OrderViewSet(viewsets.ModelViewSet):
queryset = Order.objects.all() # <-- Simply returns all middleware Order objects, not what we want
serializer_class = OrderSerializer
响应应相同,例如如果另一个具有不同数据库的用户进行了调用,则应该相同。
我如何根据用户从各自的数据库中返回正确的订单,并且仍然能够进行过滤/排序?
从AppOrder中获取它们,为它们创建中间件Order对象,然后返回它们既费时又不可能。