保存表格 - 多对多关系

时间:2018-03-13 11:33:40

标签: django django-models django-templates django-views

我试图在多对多的关系中保存基于表单的数据。我的模型如下:

class Student(models.Model):
 stuName = models.CharField(max_length=100)
 stuCity = models.CharField(max_length=100)
 stuPhone = models.IntegerField(max_length=10)
 stuNationality = models.CharField(max_length=50)
 stuCreatedt = models.DateTimeField(default=timezone.now)
 def __str__(self):
     return '%s %s %s' % (self.stuName,self.stuCity,self.stuNationality)

class Dept(models.Model):
 deptId = models.AutoField(primary_key=True)
 deptName = models.CharField(max_length=100)
 def __str__(self):
      return '%s %s' % (self.deptId, self.deptName)


   class Course(models.Model):
 courseId = models.AutoField(primary_key=True)
 courseName = models.CharField(max_length=100)
 enrolledStu = models.IntegerField(max_length=3)
 students = models.ManyToManyField(Student)
 dept = models.ForeignKey(Dept, on_delete=models.CASCADE)
 def __str__(self):
      return '%s %s %s %s' % (self.courseName,self.enrolledStu,self.students,self.dept)

我想保存。我的观点是

def addStudent(request):
if request.method == "POST":
    form = CourseForm(request.POST)
    if form.is_valid():

        print(form.cleaned_data)
        course = form.save(commit=False)
        course.courseName = request.courseName
        course.save()
        form.save_m2m()
        return redirect('lstDetail')

我试过没有form.save_m2m()方法,但仍然给出错误。

AttributeError at /stuApp/new/

'WSGIRequest'对象没有属性'courseName' 请求方法:POST 请求网址:http://127.0.0.1:8000/stuApp/new/ Django版本:1.11.10 异常类型:AttributeError

Exception Value:    
WSGIRequest' object has no attribute 'courseName

异常位置:addStudent中的C:\ Users \ PycharmProjects \ learning \ stuApp \ views.py,第22行 Python可执行文件:C:\ Users \ PycharmProjects \ learning \ venv \ Scripts \ python.exe Python版本:3.6.4

这是来自html页面。在控制台上没有任何错误它只打印查询。

基本上我无法保存包含多对多字段和关系的数据。

我的HTML是

<form method="POST" class="post-form">{% csrf_token %}
    {{ form.as_p }}
    <button type="submit" class="save btn btn-default">Save</button>
</form>

urls py:

urlpatterns = [
url(r'^$',views.listStudent,name='liststudent'),
url(r'^stuApp/(?P<pk>\d+)/$', views.lstDetail, name='lstDetail'),
url(r'^stuApp/new/$', views.addStudent, name='addStudent'),
url(r'^stuApp/new/$', views.addStudent, name='addStudent'),

感谢您的帮助和时间

0 个答案:

没有答案