Django M2M一次创建多个关联object笔记

最近写的一个项目中,有一个功能是关于用户发帖的时候会输入标签功能,这个标签在前端是文本形式的

POST出去后,后端处理,然后转化成相应的object保存。

功能实现思路

用户表单输入帖子相关的标签,不同的标签用隔开,然后在提交数据的时候,当做一个整体传到后端,然后后端接收到,在分隔开,每一个字段单独保存为一个object,如果数据库中有一样的object则只关联不创建,如果没有响应的object,那么既创建又关联。

node_obj_exist_list=[]

node_obj_noexist_list=[]

fornodeinnode_list:

ifNodes.objects.filter(name=node).exists():

node_obj=Nodes.objects.get(name=node)

node_obj_exist_list.append(node_obj)

else:

node_obj=Nodes()

node_obj.name=node

node_obj.owner=user

node_obj.status=2

node_obj.save()

node_obj_noexist_list.append(node_obj)

node_objs=node_obj_exist_list+node_obj_noexist_list

thread.save()

thread.nodes.add(*node_objs)

功能方面是实现了,但是老实说,这个功能写的感觉有点繁琐,抽空改进一下。

待完善的地方

1、表单提交的地方,有点对用户输入不友好,这块感觉需要弄点js来方便用户输入,可能涉及到的内容是对用户输入的主体内容进行分词,然后给出建议标签。2、需要对标签进行过滤,目前后端逻辑没对这块进行过滤,比如用户输入的标签中,有或者用户输入很多,这个对需要在进行判断处理一下。3、改进代码质量,虽然目前功能实现了,但是感觉代码质量不是很好,这块后期根据自己的水平,慢慢改进。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180222G059VK00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券