python - 条形码图像文件中的最后一位不匹配,django
问题描述
我有一个模型,其中produc_attr
存储在CharField
(字符串)中。使用该get_code
方法,我将字符串转换为product_attr
数字(13 位),显示在我的code_number
专栏中。接下来,我将通过该get_barcode
方法生成条形码图像。问题是:条形码PNG(图像)文件上的数字错误。也就是说,总共 13 位数字中的最后一个数字是增加或减少的,我通过在表格末尾添加一列 (printed_number) 来显示这一点。任何帮助,将不胜感激。
class Inventory(models.Model):
product = models.ForeignKey('Product', blank=True, null=True, on_delete=models.SET_NULL)
product_attr = models.CharField(max_length=50, blank=True, null=True)
code_number = models.CharField(max_length = 13, blank=True, editable=False)
barcode = models.ImageField(upload_to = 'barcode/', blank=True)
def __str__(self):
return self.product
def get_code_number(self):
str1 = self.product_attr.encode()
hash1 = hashlib.sha1()
hash1.update(str1)
return str(int(hash1.hexdigest(), 16))[:13]
def get_barcode(self):
EAN = barcode.get_barcode_class('ean13')
ean = EAN(f'{self.code_number}', writer=ImageWriter())
buffer = BytesIO()
ean.write(buffer)
return self.barcode.save('barcode.png', File(buffer), save=False)
def save(self, *args, **kwargs):
self.code_number = self.get_code_number()
self.get_barcode()
super(Inventory, self).save(*args, **kwargs)
解决方案
您必须更改保存方法。将生成的 ean 编号存储在您的code_number
字段中:
self.code_number=ean
推荐阅读
- ios - 如何使用 Core Bluetooth 为自定义 BLE 设备广播不断变化的数据?
- ios - 图像扩展超出屏幕的 HStack
- c++ - 字符串名称和下标运算符前的 & 符号的含义
- php - 更新数组中的项目值,如何附加项目而不是覆盖它?
- kubernetes - 通过 Helm 在 GKE 中部署 Kong API Gateway 并使用 Google 托管的证书
- visual-studio - visual C++ 2019 next 搜索结果键绑定
- python - AttributeError:未找到密集
- c# - 有没有办法让来自外部链接的弹出窗口在 Xamarin IOS WKWebview 上工作?
- angular - 更改指令输出格式
- google-bigquery - Bigquery 存储 API 多处理段错误