【问题标题】:uploading file as id using models ind django使用 django 中的模型将文件作为 id 上传
【发布时间】:2016-10-30 04:12:02
【问题描述】:

我有简短的模型定义

class File(models.Model):
    id = models.IntegerField(primary_key=True);
    file = models.FileField(upload_to='%id')
    title = models.CharField(max_length=128)
    upload_date = models.DateTimeField(auto_now_add=True, blank=True);

如您所见(或未见),我希望此模型能够处理上传,因此文件名与行 ID 相同。有没有可能以某种方式做到这一点?

【问题讨论】:

  • 模型本身不会为你上传任何东西,你仍然需要上传客户端表单和一个 Django 视图来处理请求。
  • 一切都完成了,但我在想如果通过更改upload_to我可以实现将文件名更改为id。 - 我只是将数据从表单放到模型中,这是最简单的方法。
  • 所以你有 file = request.files['file'] 然后 file.filename 进入你的 char 字段

标签: django file-upload django-models


【解决方案1】:

当然可以

def update_filename(instance, filename):
    filename_ = instance.id
    file_extension = filename.split('.')[-1]
    return '%s.%s' % (filename_, file_extension)

class File(models.Model):
    id = models.IntegerField(primary_key=True)
    file = models.FileField(upload_to=update_filename)
    title = models.CharField(max_length=128)
    upload_date = models.DateTimeField(auto_now_add=True, blank=True)

我会将类名更改为其他名称,因此它不会影响内置的File

【讨论】:

  • 之前不选会被知道吗?
  • @oneat 你不需要 id 字段,你为什么要定义自己的 id?
猜你喜欢
  • 2012-04-15
  • 2013-06-01
  • 1970-01-01
  • 2021-12-31
  • 1970-01-01
  • 2012-11-22
  • 1970-01-01
  • 1970-01-01
  • 2021-07-30
相关资源
最近更新 更多