Django-将字符串字段保存到Postgres中的日期字段中



我正在Django中实现一个web应用程序,它允许用户上传CSVExcel文件。这些文件有4列(将来可能会接受不同数量的列(,其中两列是日期。上传文件中的每一行都应该插入到我的Postgresql数据库中。

我很难做两件事:

  1. 将上传文件的每一行保存在数据库中。这个问题源于这样一个事实,即这两个日期字段是DateTimeField类型的,而上传文件中解析的字段默认是String类型的。

  2. 我也想扩展这个例程的功能来处理Excel文件,但我不知道如何在不探究扩展、从Excel转换为CSV等的情况下以优雅的方式完成它。你有一种优雅的方法吗?

    def upload_file(request) -> render:
    template = 'my-app/upload.html'
    if request.method == 'POST' and request.FILES['csvfile']:
    csv_file = request.FILES['csvfile']
    decoded_file = csv_file.read().decode('utf-8').splitlines()
    csv_reader = DictReader(decoded_file, fieldnames=['col1', 'creation_data', 'last_login_date', 'col2'])
    for user in csv_reader:
    # Create an instance of an User model
    new_user = User()
    # TODO - the fields of dates has to be parsed to datetime!
    new_user.__dict__.update(user)
    # Store this user in the database
    new_user.save()
    return render(request, template)
    

如注释中所述,假设您事先知道日期格式,则可以使用datetime.strptime(((因为如果不知道,则会困难得多,在这种情况下,dateutil是您的朋友(

对于第二个问题,您可以使用此处描述的解决方案

您需要检查如何获得excel包读取的数据并将其输入到包中,因此在使用中的数据之前不需要保存文件

最新更新