docs: def serialize(self, queryset, **options):
          """
          Serialize a queryset.
          """
          self.options = options
  
          self.stream = options.get("stream", StringIO())
          self.primary_key = options.get("primary_key", None)
          self.properties = options.get("properties")
          self.geometry_field = options.get("geometry_field", "geom")
          self.use_natural_keys = options.get("use_natural_keys", False)
          self.bbox = options.get("bbox", None)
          self.bbox_auto = options.get("bbox_auto", None)
          self.srid = options.get("srid", GEOJSON_DEFAULT_SRID)
          self.crs = options.get("crs", True)
  
          self.start_serialization()
  
          if ValuesQuerySet is not None and isinstance(queryset, ValuesQuerySet):
              self.serialize_values_queryset(queryset)
  
          elif isinstance(queryset, list):
              self.serialize_object_list(queryset)
  
          elif isinstance(queryset, QuerySet):
              self.serialize_queryset(queryset)
  
          self.end_serialization()
          return self.getvalue()