django - modelform 方法实现 -增 - 带校验数据 | 改

1. views.py 页面  

  使用modelform 必须顶一个类   class BumenModelForm(forms.ModelForm):

   使用所有字段 : fields = '__all__'  # fields = ['name' , 'pwd'] 使用字段

  批量生成样式

from django import forms

class BumenModelForm(forms.ModelForm):
    class Meta:
        model = models.Bumen
        fields = '__all__'

    # 给input 添加插件
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for name, field in self.fields.items():
            field.widget.attrs = {'class': 'form-control','placeholder':field.label}

def bumen_add(request):

    if request.method =='GET':
        form = BumenModelForm()
        return render(request, 'bumen_add.html', {'form': form})

    # POST 校验数据
    form = BumenModelForm(data=request.POST)
    if form.is_valid():
        form.save()
        return redirect('/bumen_list/')
    return render(request, 'bumen_add.html', {'form': form})

2. add.html 页面代码   

  提示错误 : {{ item.errors.0 }}

   提示信息 :  {{ item.label }}

{% extends  'layout.html' %}

{% block content %}
    <h2> 添加部门 </h2>
   <form method="post" novalidate>
   {% csrf_token %}
        {% for item in form %}
        <div class="form-group">
            <label for="exampleInputEmail1"><span style="color: red">*</span> {{ item.label }} </label>
            {{ item }} <span style="color: red; font-size: small">{{ item.errors.0 }} </span>
        </div>
        {% endfor %}

      <button type="submit" class="btn btn-default">提交</button>
   </form>

{% endblock %}

3. models.py 

  返回链表中的字段名称 :

# 部门表
class Bumen(models.Model):
    title = models.CharField(max_length=32, verbose_name='部门')
    def __str__(self):
        return self.title

 


 

 

数据修改 

# 部门编辑

from django import forms

class BumenModelForm(forms.ModelForm):
    class Meta:
        model = models.Bumen
        fields = '__all__'

    # 给input 添加插件
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for name, field in self.fields.items():
            field.widget.attrs = {'class': 'form-control'}


def bumen_edit(request, nid):
    # 查询获取对象 使用显示默认值 
    row_obj = models.Bumen.objects.filter(id=nid).first()
    if request.method =='GET':
        # 获取编辑id 的数据 对象

        # instance=row_obj 显示编辑框中的  默认值
        form = BumenModelForm(instance=row_obj)
        return render(request, 'bumen_edit.html', {'form': form})

    # 校验编辑数据  instance=row_obj ->指定需要修改的数据 无此代码 是新增数据
    form = BumenModelForm(data=request.POST, instance=row_obj)
    if form.is_valid():
        form.save()
        return redirect('/bumen_list/')
    return render(request, 'bumen_edit.html', {'form': form})

 

 


 

 

临时笔记  : 给 input 添加 type = ‘text ’ 样式  |  可以空出时间 来自己写样式 

 

 

posted @ 2022-05-24 12:59  我在春天等伱  阅读(84)  评论(0)    收藏  举报