Fix nullability of blank charfields in values and values_list (#1020)

Char fields with blank=True set should not be considered nullable in the
context of values() and values_list() querysets.

I'm also not a huge fan of the way these fields are made optional in the
constructur to the model classes, it feels like it would be better to
mark the arguments as having a default value, rather than allow sending
in None, but I'd rather keep this fix small and look at the overall
problem at a later point.
This commit is contained in:
Sigurd Ljødal
2022-06-25 13:37:25 +02:00
committed by GitHub
parent dd0fe02367
commit 1a29ad4f97
3 changed files with 37 additions and 0 deletions

View File

@@ -263,6 +263,9 @@ class DjangoContext:
return attname
def get_field_nullability(self, field: Union[Field, ForeignObjectRel], method: Optional[str]) -> bool:
if method in ("values", "values_list"):
return field.null
nullable = field.null
if not nullable and isinstance(field, CharField) and field.blank:
return True