SerializerMethodField允许添加自定义查询来限制外键模型。
我有这些型号:
class Item(..):
....
class Folder(..):
...
class File(..):
item = ...
folder = ...
class FileSerializer(...):
class Meta:
model = File
class FolderSerializer(...):
files = FileSerializer(many=True,readonly=True)
class Meta:
model = Folder
当我调用FolderViewSet
LIST请求时,它为每个Folder
序列化了所有的Files
。我需要使它只序列化成为特定Item
的文件。
现在,我正在前端过滤Files
,但这将在未来变得非常重要。
你知道怎么做吗?有没有内置的方法?
class FolderSerializer(...):
files = serializers.SerializerMethodField()
class Meta:
model = Folder
def get_files(self, instance):
files = File.objects.filter(folder=instance)
serializer = FileSerializer(instance=files, request=request, many=True, readonly=True)
return serializer.data