Skip to content

Instantly share code, notes, and snippets.

@sky-code
Created June 26, 2024 10:05
Show Gist options
  • Select an option

  • Save sky-code/0476b34a18d08520322554b57edd1877 to your computer and use it in GitHub Desktop.

Select an option

Save sky-code/0476b34a18d08520322554b57edd1877 to your computer and use it in GitHub Desktop.
def select_fields_from_schema(schema: BaseModel, queryset: QuerySet, extend_include: list[str], exclude: list[str]):
fields = set(schema.model_fields.keys())
if extend_include:
fields = fields.union(extend_include)
if exclude:
fields = fields.difference(exclude)
queryset_model_fields = [f.name for f in queryset.model._meta.get_fields() if f.concrete]
fields = fields.intersection(queryset_model_fields)
return queryset.values(*fields)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment