我有一个模型,我想在其中存储一些小的(2-4字节)字节字符串(例如:
b'foo'
或
b'\x02'
)我想知道在我的django模型上建模的最佳方法。我想我可以用
CharField
但这似乎不像我想象的那样有效。BinaryField似乎确实有效,但我不确定它是否适用于长度较短的字段(同样,通常是2-4字节)
给定模型:
class Foobar(models.Model):
charfield = models.CharField(max_length=10)
binaryfield = models.BinaryField()
当我这样做的时候:
>>> fb1 = Foobar()
>>> fb1.charfield = b'\0000'
>>> fb1.binaryfield = b'\0000'
>>> fb1.save()
然后读回记录:
>>> read = Foobar.objects.get(id=fb1.id)
>>> read.charfield == b'\0000'
False
>>> read.binaryfield == b'\0000'
True
我希望这两项平等检查都是真实的。此外,
the docs
似乎表明不允许在二进制字段上过滤查询集(这是我需要做的事情)。说了这句话,似乎对我有用:
>>> Foobar.objects.filter(binaryfield__in=[b'\0000', b'blarg'])
<QuerySet [<Foobar: Foobar object>]>
我是不是错过了一些关于查菲尔德的东西?BinaryField是这里的合适选择吗?还是有更好的选择?
如果这很重要,我将使用django 1.11(当前最新的LTS版本),这是一个在Python3.6上运行的项目。