【发布时间】:2019-11-19 03:16:55
【问题描述】:
我是 django 新手,正在尝试弄清楚如何将特定字段添加到 django 模型中。我想上传一个 csv 文档并保存它的标题。如您所见,我想使用随文档一起发送的标题,或者如果它们未发送,则使用文档第一行中的标题。
from django.db import models
class CSV_API_DB(models.Model):
headers = models.CharField(max_length=250, blank=True)
delimiter = models.CharField(max_length=1, default=';')
filefield = models.FileField(upload_to='uploads/', max_length=100, default='empty')
actual_headers = ''
def __str__(self):
actual_headers = ''
if not self.headers:
file_path = str(self.filefield)
file = open(file_path)
for line in file:
string_line = str(line[:-1])
actual_headers = string_line.split(self.delimiter)
break
else:
actual_headers = self.headers.split(self.delimiter)
return str(actual_headers)
true_headers = models.CharField(max_length=250, default = str(actual_headers), editable=False)
问题似乎是,true_headers 不会被 '__ str __' 函数覆盖,因为数据库中 true_headers 的值始终只是空字符串。
【问题讨论】:
-
快速提示:最好使用上下文管理器更安全地打开文件(以确保在发生错误时不会有未关闭的文件描述符)。阅读上下文管理器和“with open(filename) as f”
-
我将阅读有关上下文管理器的信息,谢谢您的提示。