django图像上传帮助

django图像上传帮助,django,django-forms,Django,Django Forms,我有一个模板,用户可以输入自己的数据,并上传他的照片。照片上传将使用ajax完成,表单中有一个单独的上传按钮。我的问题是如何上传照片(当用户点击上传按钮时),然后在用户点击提交按钮时保存用户信息 模型如下所示: class User(models.Model): name = models.CharField(max_length=50) # some other fields image = models.ImageField(upload_to="assets/ima

我有一个模板,用户可以输入自己的数据,并上传他的照片。照片上传将使用ajax完成,表单中有一个单独的上传按钮。我的问题是如何上传照片(当用户点击上传按钮时),然后在用户点击提交按钮时保存用户信息

模型如下所示:

class User(models.Model):
    name = models.CharField(max_length=50)
    # some other fields
    image = models.ImageField(upload_to="assets/images")

谢谢

您需要使用带有JavaScript事件处理程序的
来处理上载。jQuery的$.POST可以很容易地为您做到这一点

如果您使用
上传图像,它还将提交其包含表单

您可能希望禁用实际的“保存”按钮,直到ajax过程完成并保存该记录,以防需要与表单中的其他数据建立任何关联,等等


希望这能让您继续。

您可以返回用于将图片保存为js回调/成功函数一部分的用户实例的id,使用它填充隐藏字段,然后在用户提交表单时调用该用户实例并保存其余信息


更大的问题是,特别是考虑到用户无论如何都要提交表单,为什么要先只保存图像?

当您提交表单时,如果表单有效,则在视图中保存表单,所有内容都应保存到数据库中。你有错误吗?有什么问题吗?没有,我没有错误。问题是,照片上传过程与提交整个表单是分开的。照片应该先上传,当用户点击submit时,表单应该被保存。你为什么要使用ajax先上传图片?如果您像您一样使用Django的ImageField,并且用户选择了一个上传路径并填写您的其他信息并点击submit,那么所有信息都应该保存,然后可以显示在您的页面上。谢谢,但我忘了提到一些字段是必需的。如果模型要求我证明所有必填字段,我如何首先保存图像?至于你的问题,这只是我正在建设的网站的要求。我明白了。有两种方法可以做到这一点,您可以使用占位符数据创建用户实例,因为您知道一旦用户提交表单,您将覆盖它,但这将为上载图像但从不提交表单的用户创建一些未使用的用户配置文件。您的另一个选项是创建一个新的图像模型类,该类允许您上载和存储图像,返回图像的id,并在提交表单时保存新用户实例时使用该id。我认为选项2可能是最有效的。很酷,但是所有上传但从未绑定到任何个人资料的照片会怎么样?有没有办法跟踪这些照片或在一段时间后删除它们?是的,在创建用户实例时实际上可以这样做。创建用户帐户后,您可以删除图像表中与该帐户关联的照片,还可以删除上载日期超过一天的所有图像(这意味着用户在注册前放弃了表单)您可能有一个cron或芹菜任务,它会定期清除所有未关联的照片。感谢您的回复,我在设置视图时遇到困难,因此我无法先上载照片(可能是在tmp目录中),然后在提交时上载用户信息。欢迎您。我可能会将上传帖子指向一个单独的url/视图,以简化视图逻辑。