Advertisement
Guest User

Untitled

a guest
Jun 26th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.75 KB | None | 0 0
  1. class Course(models.Model):
  2. title = models.CharField(max_length=250)
  3. price = models.IntegerField(default=0)
  4. duration = models.CharField(max_length=50)
  5.  
  6. def __str__(self):
  7. return self.title
  8. class Student(models.Model):
  9. name = models.CharField(max_length=100)
  10. courses = models.ManyToManyField(Course)
  11. email = models.EmailField()
  12. phone = models.CharField(max_length=15)
  13. image = models.ImageField(upload_to='Students',blank=True)
  14.  
  15. def __str__(self):
  16. return self.name
  17.  
  18. class AddStudentForm(forms.ModelForm):
  19. # courses = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Course.objects.all())
  20.  
  21. class Meta:
  22. model = Student
  23. fields = ['name','courses','email','phone','image']
  24.  
  25. def __init__(self, *args, **kwargs):
  26. super(AddStudentForm, self).__init__(*args, **kwargs)
  27.  
  28. self.fields["courses"].widget = CheckboxSelectMultiple()
  29. self.fields["courses"].queryset = Course.objects.all()
  30.  
  31. def addstudent(request):
  32. courses = Course.objects.all()
  33. if request.method == 'POST':
  34. form = AddStudentForm(request.POST,request.FILES)
  35. if form.is_valid():
  36. student = form.save(commit=False)
  37. course = form.cleaned_data['courses']
  38. student.courses = course
  39. student.save()
  40. # student.save_m2m()
  41. # student.courses.set(course) # this method also didn't helped me
  42.  
  43. messages.success(request, 'student with name {} added.'.format(student.name))
  44. return redirect('students:add_student')
  45. else:
  46. # messages.error(request,'Error in form.Try again')
  47. return HttpResponse(form.errors) # this block is called and returns courses
  48. else:
  49. form = AddStudentForm()
  50. return render(request,'students/add_student.html',{'form':form,'courses':courses})
  51.  
  52. <form action="{% url 'students:add_student' %}"
  53. method="post"
  54. enctype="multipart/form-data">
  55. {% csrf_token %}
  56. <div class="form-group">
  57. <h5>Full Name <span class="text-danger">*</span>
  58. </h5>
  59. <div class="controls">
  60. <input type="text" name="name" class="form-
  61. control" > </div>
  62. </div>
  63. <div class="form-group">
  64. <h5>Courses<span class="text-danger">*</span>
  65. </h5>
  66. <div class="controls">
  67. {% for course in courses %}
  68. <input name ="courses" type="checkbox" id="course-
  69. {{course.id}}" value="{{course.title}}">
  70. <label for="course-{{course.id}}">{{course.title}}
  71. </label>
  72. {% endfor %} # i think the problem is here.
  73. </div>
  74. </div>
  75. <div class="form-group">
  76. <h5>Email <span class="text-danger">*</span></h5>
  77. <div class="controls">
  78. <input type="text" name="email" class="form-
  79. control" required> </div>
  80. </div>
  81.  
  82. </div>
  83. <div class="form-group">
  84. <h5>Image <span class="text-danger">*</span></h5>
  85. <div class="controls">
  86. <input type="file" name="image" class="form-control" > </div>
  87.  
  88. </div>
  89. <div class="text-xs-right">
  90. <button type="submit" class="btn btn-info">Add</button>
  91. </div>
  92. </form>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement