我试图在多对多的关系中保存基于表单的数据。我的模型如下:
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'),
感谢您的帮助和时间