Django 如何筛选空列表?多对多关系

Django 如何筛选空列表?多对多关系,django,django-rest-framework,Django,Django Rest Framework,我的筛选如下: queryset = queryset.prefetch_related( Prefetch('level', queryset=Level.objects.filter(id=level))) 在这种情况下,将保留空列表: { ... "level": [] ... }, { ... "level": [ 2 ] ... } 我试着这样过滤:

我的筛选如下:

queryset = queryset.prefetch_related(
            Prefetch('level', queryset=Level.objects.filter(id=level)))
在这种情况下,将保留空列表:

{
   ...
    "level": []
   ...
},
{
    ...
    "level": [
        2
    ]
    ...
}
我试着这样过滤:

queryset = queryset.prefetch_related(
            Prefetch('level',queryset=Level.objects.filter(id=level).exclude(id__isnull=True)))
但这没用

我还想知道是否有可能在没有列表的情况下得到一个值

{
    ...
    "level": 2
    ...
}

您不应该在
预取
对象上进行筛选,因为这样做“太”晚了。然后过滤掉元素。您应该使用以下内容过滤
queryset

queryset.filter(level=level).prefetch_related(
     Prefetch('level', queryset=Level.objects.filter(id=level)))
)
然后在序列化程序中,您可以使用一个
整型字段
,例如,它取
source='level\u值'

从rest_框架导入序列化程序

class MyModelSerializer(serializers.ModelSerializer)
    level = IntegerField(source='level_value')

    class Meta:
        model = MyModel
类MyModelSerializer(serializers.ModelSerializer)
级别=整数字段(source='level\u value')
类元:
型号=我的型号
class MyModelSerializer(serializers.ModelSerializer)
    level = IntegerField(source='level_value')

    class Meta:
        model = MyModel