Django ModelForm

url

python 复制代码
    path('userinfo2list/',views.userinfo2_list,name='userinfo2list'),
    path('userinfo2_add2/', views.userinfo2_add2, name='userinfo2_add2'),
    path('userinfo2_edit/', views.userinfo2_edit, name='userinfo2_edit'),

views

python 复制代码
def userinfo2_list(request):
   userinfo2=models.UserInfo2.objects.all()
   return render(request,'userinfo2/list.html',{'userinfo2':userinfo2})



from  django import forms
class User2ListForm(forms.ModelForm):
    class  Meta:
        model = models.UserInfo2
        fields = "__all__"

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


def userinfo2_add2(request):
    if request.method=='GET':
        form = User2ListForm()
        return render(request,'userinfo2/add2.html',{'form':form})

    form=User2ListForm(data=request.POST)
    if form.is_valid():
        form.save()
        return redirect('/index/userinfo2list')
    return render(request, 'userinfo2/add2.html', {'form': form})


def userinfo2_edit(request):
    id = request.GET.get('id')
    userinfo2 = models.UserInfo2.objects.get(id=id)
    if request.method=='GET':

        form = User2ListForm(instance=userinfo2)
        return render(request,'userinfo2/add2.html',{'form':form})

    form=User2ListForm(data=request.POST,instance=userinfo2)
    if form.is_valid():
        form.save()
        return redirect('/index/userinfo2list')
    return render(request, 'userinfo2/add2.html', {'form': form})

models

python 复制代码
class UserInfo2(models.Model):
    name=models.CharField(max_length=10,verbose_name='姓名')
    age=models.SmallIntegerField(verbose_name='性别')
    gender_choice=(
        (1,'男'),
        (2,'女')
    )
    gender=models.SmallIntegerField(verbose_name='性别',choices=gender_choice)
    salary=models.DecimalField(verbose_name='收入',max_digits=10,decimal_places=2,default=0)
    phone=models.CharField(verbose_name='电话号码',max_length=11,null=True,blank=True)
    create_time=models.DateTimeField(verbose_name='入职时间')

list.html

html 复制代码
{% extends 'layout/layout.html' %}

{% block content %}

<div class="container">
    <a href="/index/userinfo2_add" class="btn btn-primary">添加用户信息</a>
     <a href="/index/userinfo2_add2" class="btn btn-primary">ModelForm添加用户信息</a>
    <table class="table table-striped">
        <thead>
        <tr>
            <td>姓名</td>
            <td>年龄</td>
            <td>性别</td>
            <td>收入</td>
            <td>电话</td>
            <td>入职时间</td>
            <td>操作</td>
        </tr>
        </thead>
        <tbody>
        {% for userinfo in userinfo2 %}
        <tr>
            <td>{{ userinfo.name }}</td>
            <td>{{ userinfo.age }}</td>
            <td>
               {{ userinfo.get_gender_display }}
                {% if userinfo.gender == 1 %}
                   男
                {% else %}
                   女
                {% endif %}
            </td>
            <td>{{ userinfo.salary }}</td>
            <td>{{ userinfo.phone }}</td>
            <td>{{ userinfo.create_time }}</td>
            <td><a href="/index/userinfo2_edit/?id={{ userinfo.id }}">修改</a></a> </td>
        </tr>
        {% endfor %}
        </tbody>
    </table>



</div>

{% endblock %}

add2.html

html 复制代码
{% extends 'layout/layout.html' %}

{% block content %}

<div class="container">
   <form method="post" novalidate>
       {% csrf_token %}
       {%  for field in form %}
         <div class="form-group">
            <label>{{ field.label }}</label>
            {{ field }}
            <span style="color: red">{{ field.errors }}</span>
          </div>

       {% endfor %}
  <button type="submit" class="btn btn-default">Submit</button>


   </form>
</div>