html django多选择提交,django多文件上传,form提交,多对多外键保存的实例

需求:

需要实现一个用户反馈的接口,用户通过接口提交:

1.一段文字

2. 一个log文件

3. 多个图片

找了很多ModelForm,DRF-Serializer的资料,都没找到简单好用的,干脆就直接写,啥也不用。

Model.py

class UserFeedback(models.Model):

user = models.ForeignKey(User, verbose_name="用户")

desc = models.TextField(default="", verbose_name=u'问题描述')

logfile = models.FileField(upload_to='UserFeedback/%Y/%m/',

verbose_name=u'log文件',null=True, blank=True)

submit_time = models.DateTimeField(default=datetime.now, verbose_name="提交时间")

images=models.ManyToManyField("UserFeedbackImages",verbose_name=u'图片')

class UserFeedbackImages(models.Model):

image = models.ImageField(upload_to='UserFeedbackImages/%Y/%m/',

verbose_name=u'反馈图片', null=True, blank=True)

由于一个反馈,可以保护多个图片,所以images字段是ManyToMany

html:

用户反馈

提交

中必须要加上:

enctype="multipart/form-data"

和input中定义:

multiple

View.py中,先把所有的图片保存下来,然后在创建反馈后,添加图片关联。

class feedback(LoginRequiredMixin,APIView):

def post(self, request):

#save all images

ret={}

try:

imgs=[]

for payload in request.data.getlist("images"):

img=UserFeedbackImages.objects.create(image=payload)

imgs.append(img)

ufb=UserFeedback.objects.create(user=request.user,

desc=request.POST.get("desc"),

logfile=request.data.get("logfile"))

for img in imgs:

ufb.images.add(img)

ufb.save()

ret["status"]="success"

except Exception as e:

ret["status"]="fail"

ret["msg"]=str(e)

return Response(json.dumps(ret))

这样简单粗暴,也容易理解。这里记录下。

以上这篇django多文件上传,form提交,多对多外键保存的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值