2017-05-04 67 views
0

我有一个表单更新文本,但没有更新我的数据库中的复选框。复选框是数据库中的布尔模型(postgres),其中f为false且t为true。我已经看过其他一些教程,并尝试使用多选而没有太多成功。在Django中的复选框不更新数据库

我会提前道歉,因为我自学django,这是我第一个可悲的应用程序。

这里是forms.py模块

from django import forms 

from .model import parcels 

class tableedit(forms.ModelForm): 
     class Meta: 
       model = parcels 
       fields = [ 
         "some_number", 
         "boolean_checkbox_1", 
         "boolean_checkbox_2" 

       ] 

这里是model.py

from django.db import models 
from django.contrib.postgres.fields import ArrayField 
from django.core.urlresolvers import reverse 


class TableName(models.Model): 
     name = 'table_name' 
     verbose_name = 'table_name' 
     some_number = models.CharField('some_number', max_length=30) 
     boolean_checkbox_1 = models.BooleanField('boolean_checkbox_1 ', max_length =1) 
     boolean_checkbox_2 = models.BooleanField('boolean_checkbox_2', max_length = 1) 
     # Returns the string representation of the model. 
     def __str__(self):    # __unicode__ on Python 2 
       return self.name 

     def get_absolute_url(self): 
       return reverse("table_edit:view", kwargs={"id": self.id}) 
     class Meta: 
       managed = True 
       db_table = 'table' 

这里的模型是我views.py

from django.shortcuts import render, redirect 
from django.http import HttpResponse 
from django.http import HttpResponseRedirect 
from django.core.urlresolvers import reverse 
from django.views.generic import UpdateView,View 
from django.contrib import auth 

from django.views.decorators.csrf import csrf_protect 
from model import tableedit 
from django.contrib.auth.decorators import login_required 
from django import forms 
import simplejson 
from forms import tableedit 

@login_required 
@csrf_protect 
def table_edit(request, p_id = None): 
     data = parcels.objects.get(id = p_id) 
     form = tableedit(request.POST or None, instance = data) 


     if form.is_valid(): 
       instance = form.save(commit = False) 
       instance.save() 
       return HttpResponseRedirect(instance.get_absolute_url()) 

     context = { 
       "some_number" : data.some_number, 
       "boolean_checkbox_1" : data.boolean_checkbox_1, 
       "boolean_checkbox_2" : data.boolean_checkbox_2, 
       "form":form} 

     return render(request, "static/table_edit.html", context) 

这里是form_edit.html文件

{% if next %} 
    <input type = "hidden" name="next" value= {% url 'table.view' table.id %} \> 
    {% endif %} 
    {{ form.as_p }} 


<form action=next method="post">{% csrf_token %} 

    <input type="submit" value="Update Item" /> 
</form> 

回答

0

您的{{ form.as_p }}不在您的html <form>标记内。任何数据都不可能从该表单发送到服务器。