Browse Source

Added test of filtering on BinaryField and corrected docs.

Jon Dufresne 6 years ago
parent
commit
fb2964a410
2 changed files with 12 additions and 3 deletions
  1. 2 3
      docs/ref/models/fields.txt
  2. 10 0
      tests/model_fields/test_binaryfield.py

+ 2 - 3
docs/ref/models/fields.txt

@@ -416,9 +416,8 @@ guaranteed to fit numbers from ``-9223372036854775808`` to
 
 .. class:: BinaryField(max_length=None, **options)
 
-A field to store raw binary data. It only supports ``bytes`` assignment. Be
-aware that this field has limited functionality. For example, it is not possible
-to filter a queryset on a ``BinaryField`` value.
+A field to store raw binary data. It can be assigned :class:`bytes` or a
+:class:`memoryview`.
 
 By default, ``BinaryField`` sets :attr:`~Field.editable` to ``False``, in which
 case it can't be included in a :class:`~django.forms.ModelForm`.

+ 10 - 0
tests/model_fields/test_binaryfield.py

@@ -34,3 +34,13 @@ class BinaryFieldTests(TestCase):
         self.assertIs(field.editable, True)
         field = models.BinaryField(editable=False)
         self.assertIs(field.editable, False)
+
+    def test_filter(self):
+        dm = DataModel.objects.create(data=self.binary_data)
+        DataModel.objects.create(data=b'\xef\xbb\xbf')
+        self.assertSequenceEqual(DataModel.objects.filter(data=self.binary_data), [dm])
+
+    def test_filter_memoryview(self):
+        dm = DataModel.objects.create(data=self.binary_data)
+        DataModel.objects.create(data=b'\xef\xbb\xbf')
+        self.assertSequenceEqual(DataModel.objects.filter(data=memoryview(self.binary_data)), [dm])