diff --git a/django-stubs/db/models/fields/__init__.pyi b/django-stubs/db/models/fields/__init__.pyi index 388af37..d4c74af 100644 --- a/django-stubs/db/models/fields/__init__.pyi +++ b/django-stubs/db/models/fields/__init__.pyi @@ -493,7 +493,7 @@ class FilePathField(Field[_ST, _GT]): ): ... class BinaryField(Field[_ST, _GT]): - _pyi_private_get_type: bytes + _pyi_private_get_type: Union[bytes, memoryview] class DurationField(Field[_ST, _GT]): _pyi_private_get_type: timedelta diff --git a/tests/typecheck/fields/test_base.yml b/tests/typecheck/fields/test_base.yml index 014c04b..9d3cf23 100644 --- a/tests/typecheck/fields/test_base.yml +++ b/tests/typecheck/fields/test_base.yml @@ -165,3 +165,12 @@ reveal_type(book.published) # N: Revealed type is "main.Year*" def accepts_int(arg: int) -> None: ... accepts_int(book.published) + +- case: test_binary_field_return_types + main: | + from django.db import models + class EncodedMessage(models.Model): + message = models.BinaryField() + obj = EncodedMessage(b'\x010') + + reveal_type(obj.message) # N: Revealed type is "Union[builtins.bytes, builtins.memoryview]"