Django表单数据在mysql数据库中不提交/不可见

Django表单数据在mysql数据库中不提交/不可见,django,django-models,django-forms,Django,Django Models,Django Forms,我使用连接到MySQL数据库的SessionWizardView设计并构建了一个Django 1.6.2调查应用程序 问题是(据我所知)提交的表单数据没有保存到数据库中。这是我第一次构建这样的应用程序,甚至是使用数据库 有人能看看我做了什么和我的代码,并指出我犯了什么错误,为什么我看不到我的调查表提交的任何内容吗? 有人告诉我需要为数据创建一个模型,有人建议我使用ModelForm在数据库中创建表和列。我已经这样做了,但我仍然没有看到我提交的内容 我的过程 我通过 终端创建数据库django_

我使用连接到MySQL数据库的SessionWizardView设计并构建了一个Django 1.6.2调查应用程序

问题是(据我所知)提交的表单数据没有保存到数据库中。这是我第一次构建这样的应用程序,甚至是使用数据库

有人能看看我做了什么和我的代码,并指出我犯了什么错误,为什么我看不到我的调查表提交的任何内容吗?

有人告诉我需要为数据创建一个模型,有人建议我使用
ModelForm
在数据库中创建表和列。我已经这样做了,但我仍然没有看到我提交的内容

我的过程
  • 我通过 终端
    创建数据库django_数据库和其中的表被创建
    当我运行命令
    python manage.py syncdb

  • 我可以在本地计算机和公共服务器上完成调查。没有错误,看起来一切正常

  • 我已经设置了phpMyAdmin,可以看到django_db数据库和
    survey_person
    模型。然而,我似乎找不到任何应通过表格提交的数据

  • 我曾尝试使用phpMyAdmin中的搜索功能查找我提交的任何表单数据,但无法查看

  • 我已将数据库导出为.CSV文件,但它是空的

  • 如果我在phpMyAdmin中使用insert工具,数据将保存在数据库中,我可以在使用搜索工具时返回它。导出CSV文件时,CSV文件中也存在相同的数据

这似乎表明,在向数据库提交内容时,我的应用程序中缺少了一个步骤

谁能告诉我哪里出了问题

我的代码 我已尝试将以下内容限制为仅适用于相关代码

设置.py

DATABASES = {
    'default': { 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'django_db',                                       
        'USER': 'root',
        'PASSWORD': 'xxxxxxxxxxxxxxxxx',
        'HOST': '127.0.0.1',
        #'PORT': '', 
    }
}
url(r'^surveyone/$', SurveyWizardOne.as_view([
                                             SurveyFormA, 
                                             SurveyFormB,
                                             SurveyFormC,
                                             ....
                                             ....
                                             SurveyFormG,
                                             SurveyFormH,
                                             SurveyFormI
                                             ])),
class SurveyFormA(forms.ModelForm):

    birthdate = forms.DateField(widget=extras.SelectDateWidget(years = range(1995, 1900, -1)), required=False)

    class Meta:
        model = Person
        fields = ['sender', 'birthdate', 'sex', 'relationship', 'state']



class SurveyFormB(forms.ModelForm): 
    class Meta:
        model = Person
        fields = ['internet_usage', 'smart_phone_ownership', 'smart_phone_usage']        

        widgets = {'internet_usage' : RadioSelectNotNull,
                   'smart_phone_ownership' : RadioSelectNotNull,
                   'smart_phone_usage' : RadioSelectNotNull,
                   }


class SurveyFormC(forms.ModelForm):   
    class Meta:
        model = Person
        fields = ['education', 'wages', 'presentage_savings', 'occupation', 'living']        

        widgets = {'education' : forms.RadioSelect,
                   'wages' : forms.RadioSelect,
                   'presentage_savings' : forms.RadioSelect,
                   'occupation' : forms.RadioSelect,
                   'living' : forms.RadioSelect,} 

        ....
        ....
     sender = models.EmailField(null=True, blank=True, verbose_name='What is your email address?')     

        birthdate = models.DateField(null=True, blank=True) #overwritten in forms.py so passed no more arguments

        SEX = (
            ('MALE', 'Male'),
            ('FEMALE', 'Female'))    
        sex = models.CharField(null=True, blank=True, max_length=100, choices=SEX, verbose_name='What sex are you?')


        RELATIONSHIP = (
            ('SINGLE', "Single"),
            ('INARELATIONSHIP', "In a relationship"),
            ('MARRIED', "Married"),
            ('DIVORCED', "Divorced"),
            ('SEPARATED', "Separated"),
            ('WIDOWED', "Widowed"),)    
        relationship = models.CharField(null=True, blank=True, max_length=100, choices=RELATIONSHIP, verbose_name='What is your relationship status?')             



                ....

                ....

                def __unicode__(self):
                return self
url.py

DATABASES = {
    'default': { 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'django_db',                                       
        'USER': 'root',
        'PASSWORD': 'xxxxxxxxxxxxxxxxx',
        'HOST': '127.0.0.1',
        #'PORT': '', 
    }
}
url(r'^surveyone/$', SurveyWizardOne.as_view([
                                             SurveyFormA, 
                                             SurveyFormB,
                                             SurveyFormC,
                                             ....
                                             ....
                                             SurveyFormG,
                                             SurveyFormH,
                                             SurveyFormI
                                             ])),
class SurveyFormA(forms.ModelForm):

    birthdate = forms.DateField(widget=extras.SelectDateWidget(years = range(1995, 1900, -1)), required=False)

    class Meta:
        model = Person
        fields = ['sender', 'birthdate', 'sex', 'relationship', 'state']



class SurveyFormB(forms.ModelForm): 
    class Meta:
        model = Person
        fields = ['internet_usage', 'smart_phone_ownership', 'smart_phone_usage']        

        widgets = {'internet_usage' : RadioSelectNotNull,
                   'smart_phone_ownership' : RadioSelectNotNull,
                   'smart_phone_usage' : RadioSelectNotNull,
                   }


class SurveyFormC(forms.ModelForm):   
    class Meta:
        model = Person
        fields = ['education', 'wages', 'presentage_savings', 'occupation', 'living']        

        widgets = {'education' : forms.RadioSelect,
                   'wages' : forms.RadioSelect,
                   'presentage_savings' : forms.RadioSelect,
                   'occupation' : forms.RadioSelect,
                   'living' : forms.RadioSelect,} 

        ....
        ....
     sender = models.EmailField(null=True, blank=True, verbose_name='What is your email address?')     

        birthdate = models.DateField(null=True, blank=True) #overwritten in forms.py so passed no more arguments

        SEX = (
            ('MALE', 'Male'),
            ('FEMALE', 'Female'))    
        sex = models.CharField(null=True, blank=True, max_length=100, choices=SEX, verbose_name='What sex are you?')


        RELATIONSHIP = (
            ('SINGLE', "Single"),
            ('INARELATIONSHIP', "In a relationship"),
            ('MARRIED', "Married"),
            ('DIVORCED', "Divorced"),
            ('SEPARATED', "Separated"),
            ('WIDOWED', "Widowed"),)    
        relationship = models.CharField(null=True, blank=True, max_length=100, choices=RELATIONSHIP, verbose_name='What is your relationship status?')             



                ....

                ....

                def __unicode__(self):
                return self
forms.py

DATABASES = {
    'default': { 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'django_db',                                       
        'USER': 'root',
        'PASSWORD': 'xxxxxxxxxxxxxxxxx',
        'HOST': '127.0.0.1',
        #'PORT': '', 
    }
}
url(r'^surveyone/$', SurveyWizardOne.as_view([
                                             SurveyFormA, 
                                             SurveyFormB,
                                             SurveyFormC,
                                             ....
                                             ....
                                             SurveyFormG,
                                             SurveyFormH,
                                             SurveyFormI
                                             ])),
class SurveyFormA(forms.ModelForm):

    birthdate = forms.DateField(widget=extras.SelectDateWidget(years = range(1995, 1900, -1)), required=False)

    class Meta:
        model = Person
        fields = ['sender', 'birthdate', 'sex', 'relationship', 'state']



class SurveyFormB(forms.ModelForm): 
    class Meta:
        model = Person
        fields = ['internet_usage', 'smart_phone_ownership', 'smart_phone_usage']        

        widgets = {'internet_usage' : RadioSelectNotNull,
                   'smart_phone_ownership' : RadioSelectNotNull,
                   'smart_phone_usage' : RadioSelectNotNull,
                   }


class SurveyFormC(forms.ModelForm):   
    class Meta:
        model = Person
        fields = ['education', 'wages', 'presentage_savings', 'occupation', 'living']        

        widgets = {'education' : forms.RadioSelect,
                   'wages' : forms.RadioSelect,
                   'presentage_savings' : forms.RadioSelect,
                   'occupation' : forms.RadioSelect,
                   'living' : forms.RadioSelect,} 

        ....
        ....
     sender = models.EmailField(null=True, blank=True, verbose_name='What is your email address?')     

        birthdate = models.DateField(null=True, blank=True) #overwritten in forms.py so passed no more arguments

        SEX = (
            ('MALE', 'Male'),
            ('FEMALE', 'Female'))    
        sex = models.CharField(null=True, blank=True, max_length=100, choices=SEX, verbose_name='What sex are you?')


        RELATIONSHIP = (
            ('SINGLE', "Single"),
            ('INARELATIONSHIP', "In a relationship"),
            ('MARRIED', "Married"),
            ('DIVORCED', "Divorced"),
            ('SEPARATED', "Separated"),
            ('WIDOWED', "Widowed"),)    
        relationship = models.CharField(null=True, blank=True, max_length=100, choices=RELATIONSHIP, verbose_name='What is your relationship status?')             



                ....

                ....

                def __unicode__(self):
                return self
型号.py

DATABASES = {
    'default': { 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'django_db',                                       
        'USER': 'root',
        'PASSWORD': 'xxxxxxxxxxxxxxxxx',
        'HOST': '127.0.0.1',
        #'PORT': '', 
    }
}
url(r'^surveyone/$', SurveyWizardOne.as_view([
                                             SurveyFormA, 
                                             SurveyFormB,
                                             SurveyFormC,
                                             ....
                                             ....
                                             SurveyFormG,
                                             SurveyFormH,
                                             SurveyFormI
                                             ])),
class SurveyFormA(forms.ModelForm):

    birthdate = forms.DateField(widget=extras.SelectDateWidget(years = range(1995, 1900, -1)), required=False)

    class Meta:
        model = Person
        fields = ['sender', 'birthdate', 'sex', 'relationship', 'state']



class SurveyFormB(forms.ModelForm): 
    class Meta:
        model = Person
        fields = ['internet_usage', 'smart_phone_ownership', 'smart_phone_usage']        

        widgets = {'internet_usage' : RadioSelectNotNull,
                   'smart_phone_ownership' : RadioSelectNotNull,
                   'smart_phone_usage' : RadioSelectNotNull,
                   }


class SurveyFormC(forms.ModelForm):   
    class Meta:
        model = Person
        fields = ['education', 'wages', 'presentage_savings', 'occupation', 'living']        

        widgets = {'education' : forms.RadioSelect,
                   'wages' : forms.RadioSelect,
                   'presentage_savings' : forms.RadioSelect,
                   'occupation' : forms.RadioSelect,
                   'living' : forms.RadioSelect,} 

        ....
        ....
     sender = models.EmailField(null=True, blank=True, verbose_name='What is your email address?')     

        birthdate = models.DateField(null=True, blank=True) #overwritten in forms.py so passed no more arguments

        SEX = (
            ('MALE', 'Male'),
            ('FEMALE', 'Female'))    
        sex = models.CharField(null=True, blank=True, max_length=100, choices=SEX, verbose_name='What sex are you?')


        RELATIONSHIP = (
            ('SINGLE', "Single"),
            ('INARELATIONSHIP', "In a relationship"),
            ('MARRIED', "Married"),
            ('DIVORCED', "Divorced"),
            ('SEPARATED', "Separated"),
            ('WIDOWED', "Widowed"),)    
        relationship = models.CharField(null=True, blank=True, max_length=100, choices=RELATIONSHIP, verbose_name='What is your relationship status?')             



                ....

                ....

                def __unicode__(self):
                return self
视图.py

DATABASES = {
    'default': { 
        'ENGINE': 'django.db.backends.mysql', 
        'NAME': 'django_db',                                       
        'USER': 'root',
        'PASSWORD': 'xxxxxxxxxxxxxxxxx',
        'HOST': '127.0.0.1',
        #'PORT': '', 
    }
}
url(r'^surveyone/$', SurveyWizardOne.as_view([
                                             SurveyFormA, 
                                             SurveyFormB,
                                             SurveyFormC,
                                             ....
                                             ....
                                             SurveyFormG,
                                             SurveyFormH,
                                             SurveyFormI
                                             ])),
class SurveyFormA(forms.ModelForm):

    birthdate = forms.DateField(widget=extras.SelectDateWidget(years = range(1995, 1900, -1)), required=False)

    class Meta:
        model = Person
        fields = ['sender', 'birthdate', 'sex', 'relationship', 'state']



class SurveyFormB(forms.ModelForm): 
    class Meta:
        model = Person
        fields = ['internet_usage', 'smart_phone_ownership', 'smart_phone_usage']        

        widgets = {'internet_usage' : RadioSelectNotNull,
                   'smart_phone_ownership' : RadioSelectNotNull,
                   'smart_phone_usage' : RadioSelectNotNull,
                   }


class SurveyFormC(forms.ModelForm):   
    class Meta:
        model = Person
        fields = ['education', 'wages', 'presentage_savings', 'occupation', 'living']        

        widgets = {'education' : forms.RadioSelect,
                   'wages' : forms.RadioSelect,
                   'presentage_savings' : forms.RadioSelect,
                   'occupation' : forms.RadioSelect,
                   'living' : forms.RadioSelect,} 

        ....
        ....
     sender = models.EmailField(null=True, blank=True, verbose_name='What is your email address?')     

        birthdate = models.DateField(null=True, blank=True) #overwritten in forms.py so passed no more arguments

        SEX = (
            ('MALE', 'Male'),
            ('FEMALE', 'Female'))    
        sex = models.CharField(null=True, blank=True, max_length=100, choices=SEX, verbose_name='What sex are you?')


        RELATIONSHIP = (
            ('SINGLE', "Single"),
            ('INARELATIONSHIP', "In a relationship"),
            ('MARRIED', "Married"),
            ('DIVORCED', "Divorced"),
            ('SEPARATED', "Separated"),
            ('WIDOWED', "Widowed"),)    
        relationship = models.CharField(null=True, blank=True, max_length=100, choices=RELATIONSHIP, verbose_name='What is your relationship status?')             



                ....

                ....

                def __unicode__(self):
                return self
My
views.py
是我的应用程序中最复杂的部分。不确定是否有必要展示,但我想以防万一

class SurveyWizardOne(SessionWizardView):                             
    def get_context_data(self, form, **kwargs):
        context = super(SurveyWizardOne, self).get_context_data(form, **kwargs)                      
        step = int(self.steps.current)        

        if step == 0:
            self.request.session['path_one_images'] = ['P1D1.jpg', 'P2D2.jpg', 'P3D3.jpg', 'P4D4.jpg', 'P5D5.jpg', 'P6D6.jpg', 'P7D7.jpg', 'P8D8.jpg', 'P9D9.jpg']    
            self.request.session['instruction_task_one_images'] = ['IT1A.jpg', 'IT1B.jpg', 'IT1C.jpg']    
            self.request.session['instruction_task_two_images'] = ['IT2A.jpg', 'IT2B.jpg', 'IT2C.jpg']    
            self.request.session['images'] = []
            self.request.session['slider_DV_values'] = []


        PATH_ONE_IMAGES = self.request.session.get('path_one_images', [])        
        images = self.request.session.get('images', [])
        slider_DV_values = self.request.session.get('slider_DV_values', [])
        INSTRUCTION_TASK_ONE_IMAGES = self.request.session.get('instruction_task_one_images', [])
        INSTRUCTION_TASK_TWO_IMAGES = self.request.session.get('instruction_task_two_images', [])

        if step in range (0, 27):   
            self.request.session['path_one_images'] = PATH_ONE_IMAGES                   
            self.request.session['images'] = images
            self.request.session['slider_DV_values'] = slider_DV_values
            self.request.session['instruction_task_one_images'] = INSTRUCTION_TASK_ONE_IMAGES
            self.request.session['instruction_task_two_images'] = INSTRUCTION_TASK_TWO_IMAGES

            if step == 0:
                instruction_task_first_image = random.choice(INSTRUCTION_TASK_ONE_IMAGES)     
                context['display_image'] = instruction_task_first_image                                 

            elif step == 1:
                instruction_task_second_image = random.choice(INSTRUCTION_TASK_TWO_IMAGES)   
                context['display_image'] = instruction_task_second_image  

            elif step == 9:
                first_image = random.choice(PATH_ONE_IMAGES)   
                PATH_ONE_IMAGES.remove(first_image)               
                context['display_image'] = first_image                                 
                images.insert(0, first_image)   
                self.request.session['first_image'] = images[0] 
                self.request.session.get('first_image')                          

            elif step == 10:
                second_image = random.choice(PATH_ONE_IMAGES)   
                PATH_ONE_IMAGES.remove(second_image)


            ....

            ....


        return context 


    def done(self, form_list, **kwargs):
        return render(self.request, 'Return_to_AMT.html', {
            'form_data': [form.cleaned_data for form in form_list],            
        })  
数据库管理 phpMyAdmin数据库的屏幕截图。注意:开头的隐藏字段并非用于调查表单中的介绍步骤,为简洁起见,此处未显示代码


将数据提交到模型表单不会导致其自动保存。如果要将数据从模型表单保存到数据库,则需要调用其方法。您可以在向导的方法中执行此操作


那么,保存到数据库中的位在哪里,这不起作用?这就是我所困惑的。我认为提交表单可以将数据保存到数据库中。什么东西可能会丢失或损坏?我建议你从更简单的东西开始,以便理解它。你试过Django教程吗?这也将帮助您: