美文网首页
Django-select下拉菜单的显示与保存

Django-select下拉菜单的显示与保存

作者: 钻石王老师 | 来源:发表于2021-11-06 21:00 被阅读0次

Django-select下拉菜单的显示与保存:

场景应用

用于数据表有使用外键,然后又需要在前端展示,增删改查的时候改如何写。
例子

image.png
user表,其中部门使用外键(dept表的id)多对一的关系(下文用了emp雇员,方法一样)

想要达到的效果

  • 在前端表单展示用户的信息,包括部门信息
  • 可修改部门,修改的select下拉菜单可选已经录入的部门信息,下拉单选


    image.png

models文件

class dept(models.Model):
    deptname = models.CharField(max_length=20, null=True, verbose_name="部门名称")

class emp(models.Model):
    username = models.CharField(max_length=20, verbose_name="姓名")   #姓名
    dept = models.ForeignKey(dept, on_delete=models.CASCADE, verbose_name="所在部门")      #关联部门

说明:这里不用多解释,就是普通定义emp表和dept表,注意emp的dept部门字段使用的ForeignKey多对一关系,去关联dept表的主键(dept没有重新定义主键,则是默认的主键id)

views文件

@login_required
def userAdd(request):
    if request.method == 'GET':
        deptlist = dept.objects.all()
        return render(request, 'userAdd.html', locals())
    elif request.method == 'POST':
        username = request.POST.get('username')
        dept = request.POST.get("dept")

        emp = Emp()
        emp.username = username
        emp.dept_id = dept

        emp.save()
        return redirect(reverse('sta:userList'))

说明:这里的例子是保存时候的操作,既要展示不同部门的下拉菜单,又要能够保存成功。需要注意以下地方:
1.要重新定义get,实现当加载网页的时候能够展示已保存的部门信息,所以有个deptlist = dept.objects.all(),在html中要使用deptlist取部门表中的值。
2.当使用POST要保存的时候还是按照正常逻辑,先从html取对应的值,然后新建一个emp()对象,给对应字段赋值后保存。
3.保存部门的时候,对于外键,emp表是主动增加了一个叫做emp_id的字段,所以要使用emp.dept_id = dept,将获取到的dept(id)传给emp的dept_id字段。

html文件

<tr>
    <td valign="middle" align="right">所在部门</td>
    <td>
    <select class="form-control" id="dept" name="dept">
    <option selected="" name="sdept">选择所在部门</option>
        {% for i in deptlist.values %}
           <option value="{{ i.id }}" name="sdept">{{ i.deptname }}</option>
        {% endfor %}
    </select>
    </td>
</tr>

说明:下拉单选菜单使用select,option,使用for循环从deptlist中取部门的值展示出来。所以是{% for i in deptlist.values %},注意显示的字段使用deptname,对应value使用id来用来存储在数据表中。

相关文章

  • Django-select下拉菜单的显示与保存

    Django-select下拉菜单的显示与保存: 场景应用 用于数据表有使用外键,然后又需要在前端展示,增删改查的...

  • SharedPreferences轻量数据存储

    SP的保存与显示: xml: activity:

  • 下拉菜单的显示与隐藏

    html: css javascript实现:

  • Bootstrap组件 - 下拉菜单

    用于显示链接列表的可切换、有上下文的菜单。通过与 下拉菜单(Dropdown) JavaScript 插件 的互动...

  • css学习 第五天

    CSS 下拉菜单 使用 CSS 创建一个鼠标移动上去后显示下拉菜单的效果。 基本下拉菜单 当鼠标移动到指定元素上时...

  • 简易下拉菜单

    今天做了一个简易的下拉菜单: 页面头部一个下拉菜单,鼠标滑过下拉菜单下方显示一个菜单项列表,且下拉菜单的背景图片切...

  • vue学习笔记--v-for渲染动态选项

    目标:实现一个点选下拉菜单后,选择的菜单项显示在特定位置原理:利用v-for 循环显示下拉菜单的内容,然后再利用v...

  • overflow会影响下拉菜单显示

    有下拉菜单的菜单外层的div设置overflow后,会导致下拉菜单自动裁剪,无法显示。此情况下如果要撑开菜单外层的...

  • 2019-04-02 OpenCV学习

    01显示图片 02图像加载与保存 图像属性:通道数目 高与宽 像素数据 图像类型 输出结果 读取视频 保存图...

  • HTML5--新增的文本框属性

    placeholder属性 模糊显示提示文字信息。 list属性 可输入的下拉菜单。 autocomplete属性...

网友评论

      本文标题:Django-select下拉菜单的显示与保存

      本文链接:https://www.haomeiwen.com/subject/wcojzltx.html