Django无法在数据库中保存表单数据

时间:2015-10-09 03:28:28

标签: django

我正在尝试在学习django时编写一个小应用程序。但是,当我尝试将表单数据保存在数据库中时,我遇到了一些问题。我使用python3.4和django 1.8.4,我的数据库是MySql

我遇到的第一个问题是数据库没有任何数据

这是我的型号代码:

SUBJECT_CHOICES = (
('computerscience', '计算机科学导论'),
('C-sharp', 'C#'),
('cplusplus', 'C++'),
('CCNA', 'CCNA'),
('ACM', 'ACM'),
('linux', 'linux'),
('java', 'java'),
('python', 'python')
)

class Homework(models.Model):
    handin_date = models.DateTimeField('交作业时间')
    subject = models.CharField(verbose_name = '课程', default = '计算机科学导论', max_length = 20, choices = SUBJECT_CHOICES)
    code = models.TextField(verbose_name = '代码', default = '')
    xuehao = models.CharField(verbose_name = '学号', default = '', max_length = 9)
    name = models.CharField(verbose_name = '姓名', default = '', max_length = 10)

这是我的观看代码:

def cshomework(request):
    if request.method == 'POST':
        form = HomeworkForm(request.POST)
        if form.is_valid():
            return render(request, 'blog/success.html', { 'title': '交作业成功' })
    else:
        form = HomeworkForm(initial = { 'xuehao': '学号', 'name': '姓名', 'subject': '计算机科学导论', 'handin_date': dt.now(), 'code': '你的代码' })

    return render(request, 'blog/cshomework.html', { 'title': '交作业', 'form': form })

这样我的数据库中什么都没有

第二个问题是当我尝试另一种方式时,我在我的日期基础中得到一个无值

与之前相同的型号代码

这是我的观看代码:

def cshomework(request):
    if request.method == 'POST':
        form = HomeworkForm(request.POST)
        if form.is_valid():
            return render(request, 'blog/success.html', { 'title': '交作业成功' })
    else:
        homework = Homework.objects.create(xuehao = '学号', name = '姓名', subject = '计算机科学导论', handin_date = dt.now(), code = '你的代码')
        form = HomeworkForm(instance = homework)        

    return render(request, 'blog/cshomework.html', { 'title': '交作业', 'form': form }) 

the '课程' means 'subject'

我该如何处理这些问题? 我真的很高兴你的帮助!

1 个答案:

答案 0 :(得分:4)

在检查form.is_valid()之后,您需要保存表单。

 def cshomework(request):
     if request.method == 'POST':
         form = HomeworkForm(request.POST)
         if form.is_valid():
             form.save()
             return render(request, 'blog/success.html', { 'title': '交作业成功' })
         else:
             form = HomeworkForm(initial = { 'xuehao': '学号', 'name': '姓名', 'subject': '计算机科学导论', 'handin_date': dt.now(), 'code': '你的代码' })

        return render(request, 'blog/cshomework.html', { 'title': '交作业', 'form': form })

第二种方式是,每次访问URL时都会创建一个新的HomeWork,而不提交任何帖子数据。