簡體   English   中英

如何從 Django 模型 FileField 讀取文件

[英]How to read a file form a Django model FileField

我在 Django 中有以下模型:

class Batch(CustomModel):
    product = models.ForeignKey(Product, verbose_name=_("Producto"), on_delete=models.PROTECT, related_name='batchs')
    start_date = models.DateField(_("Fecha de Inicio"), auto_now=False, auto_now_add=False)
    due_date = models.DateField(_("Fecha de Vencimiento"), auto_now=False, auto_now_add=False)
    states = models.ManyToManyField(State, verbose_name=_("Estados"))
    source_file = models.FileField(_("Archivo de origen"), upload_to=None, max_length=100)

    class Meta:
        verbose_name = _("Lote")
        verbose_name_plural = _("Lotes")

    def __str__(self):
        return "[{}]{}/{}/{}".format(self.id, self.product.id, self.start_date, self.due_date)

    def save(self, *args, **kwargs):
        super().save(*args, **kwargs)

        tokens_string = self.source_file.open()
        tokens = tokens_string.split('\n')
        print(tokens)

如您所見,在方法save()我嘗試將上傳到字段“source_file”的文件的內容打印出來。 這是正在上傳的文件:

文件.txt

867670000460
867670000693
867670001445
867670001519
867670001597

當我執行print(tokens) ,我得到一個長字符串:

b'867670000460\r\n867670000693\r\n867670001445\r\n867670001519\r\n867670001597\r\n867670002554'

我嘗試使用tokens_string.split('\\n')拆分字符串,但出現此錯誤:

  File "/Users/hugovillalobos/Documents/Code/cinetogoproject/backend/cinetogo/inventory/models.py", line 37, in save
    tokens = tokens_string.split('\n')
TypeError: a bytes-like object is required, not 'str'

如何將文件的每一行分開?

這是一個二進制字符串。

使用tokens = tokens_string.decode("utf-8").split('\\n')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM