如何在django中编辑数据?

时间:2014-05-10 11:42:28

标签: python django

我从数据库中检索了数据并将其显示在表格中。现在点击编辑按钮我要编辑form.i已成功插入和重新获取数据库中的数据,但我无法理解如何编辑和保存到数据库。

viwes.py

 def pramod(request):
     p1 = request.POST.get('name',' ')
     p2 = request.POST.get('address',' ')
     p3 = request.POST.get('city',' ')
     p4 = request.POST.get('sp',' ')
     p5 = request.POST.get('country',' ')
     p6 = request.POST.getlist('chk1[]',' ')
     p7 = request.POST.get('sex',' ')
     books =  Publisher(name=p1,address=p2,city=p3,state_province=p4,country=p5,course=p6,Gender=p7)
     books.save()
     dataset=Publisher.objects.all()
     data={
    'dataset':dataset,
     }

     return render(request,'Publisher.html',data)

models.py

  class Publisher(models.Model):
        name = models.CharField(max_length=30)
        address = models.CharField(max_length=50)
        city = models.CharField(max_length=60)
        state_province = models.CharField(max_length=30)
        country = models.CharField(max_length=50)
        course = models.CharField(max_length=50)
        Gender = models.CharField(max_length=50)

Publisher.html

  <div class="col-lg-4"  style="margin-top: 100px">
    <form action="/pramod/" method="POST">
    {% csrf_token %}

                 <div class="form-group">
                    <label>Name</label>
                        <input type="text" name="name" class="form-control"  />
                    </div>

                    <div class="form-group">
                    <label>Address</label>
                        <input type="text" name="address" class="form-control"  />
                    </div>
                    <div class="form-group">
                    <label>city</label>
                        <input type="text" name="city" class="form-control" />
                    </div>
                    <div class="form-group">
                    <label>state_province</label>
                        <input type="text" name="sp" class="form-control" />
                    </div>
                    <div class="form-group">
                    <label>country</label>
                        <input type="text" name="country" class="form-control" />
                    </div>
                   <div class="form-group">
                    <label>Course</label>&nbsp;&nbsp;&nbsp;
                   <input type="checkbox" name="chk1[]"  value="Dot.NET"  > Dot.NET
                    <input type="checkbox" name="chk1[]"  value="Python"  > Python
                     <input type="checkbox" name="chk1[]"  value="Django"  > Django
                     </div>
                    <div class="form-group">
                    <label>Sex</label>&nbsp;&nbsp;
                   <input type="radio" name="sex" checked="checked" value="Male" >Male
                   <input type="radio" name="sex" checked="checked" value="Female" >Female
                    </div>

    <button type="submit" class="btn bg-olive btn-block">save</button>
    </form>
  </div>
    <div class="col-lg-8" style="margin-top: 100px">
   <table class="table table-striped table-condensed table-bordered ">

    <B class="btn-success">Data</B> <thead class="btn-primary">

            <tr>
               <th>Name</th>
                <th>Address</th>
                <th>city</th>
                <th>country</th>
            </tr>
        </thead>
        <tbody>
         {% for p1 in dataset %}

            <tr>
                <td>{{ p1.name }}</td>
                <td >{{ p1.address }}</td>
                <td >{{ p1.city }}</td>
                <td >{{ p1.country }}</td>
                <td><a href="/pramod1/ pk=p1.id %}">edit</a></td>
                <td><a>Delete</a></td>
            </tr>
          {% endfor %}
        </tbody>

</table>

1 个答案:

答案 0 :(得分:0)

从您的代码看,它看起来像一个非常原始的代码,您正在尝试自己做所有事情。 您可以尝试以下任一方法来解决此问题:

一个。 基于类的视图(UpdateView)

在Django中,引入了基于类的视图,它们比基于函数的视图更受欢迎。

因此,您可以使用Django中的 UpdateView 轻松实现上述编码功能:https://docs.djangoproject.com/en/1.6/ref/class-based-views/generic-editing/#updateview

B中。 Django中的模型表单

但是,如果您不想更改当前视图,那么您应该尝试使用Django ModelForms:https://docs.djangoproject.com/en/1.6/topics/forms/modelforms/

以下是模型表单的示例使用:http://www.pythoncentral.io/using-python-django-modelform-first-django-application/

我强烈建议您使用UpdateView,因为它已经在场景后面使用了ModelForm