如何将视图中生成的文件保存到模型?

时间:2018-12-10 15:23:21

标签: django file-upload django-views

我有一个model.py

class SomeModel(models.Model):
    name = models.CharField(max_length = 30)
    file_field = models.FileField(upload_to=os.path.join(settings.MEDIA_ROOT,'strategies/'))

view.py

def test(request):
    csv = get_csv(args)

我的函数get_csv()返回csv的字符串。我需要将其保存在我的模型中。我不想创建文件并将现有的url放入模型中,因为我总是需要生成一个新的文件名,但是我知道,它可以自动完成。

您能以任何方式建议我解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

如果我理解正确,那么您的问题是为每个文件创建了不同的文件名。因此,您可以像这样通过对象的ID来命名文件:

def test(request):
    csv = get_csv(args)
    id = SomeModel.objects.latest('id').id + 1
    csv_file = open("file_" + str(id) + ".csv", w)
    csv_file.write(csv)
    sm = SomeModel.objects.create(name="foo", file_field=csv_file)
    csv_file.close()