Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class Course(models.Model):
- title = models.CharField(max_length=250)
- price = models.IntegerField(default=0)
- duration = models.CharField(max_length=50)
- def __str__(self):
- return self.title
- class Student(models.Model):
- name = models.CharField(max_length=100)
- courses = models.ManyToManyField(Course)
- email = models.EmailField()
- phone = models.CharField(max_length=15)
- image = models.ImageField(upload_to='Students',blank=True)
- def __str__(self):
- return self.name
- class AddStudentForm(forms.ModelForm):
- # courses = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Course.objects.all())
- class Meta:
- model = Student
- fields = ['name','courses','email','phone','image']
- def __init__(self, *args, **kwargs):
- super(AddStudentForm, self).__init__(*args, **kwargs)
- self.fields["courses"].widget = CheckboxSelectMultiple()
- self.fields["courses"].queryset = Course.objects.all()
- def addstudent(request):
- courses = Course.objects.all()
- if request.method == 'POST':
- form = AddStudentForm(request.POST,request.FILES)
- if form.is_valid():
- student = form.save(commit=False)
- course = form.cleaned_data['courses']
- student.courses = course
- student.save()
- # student.save_m2m()
- # student.courses.set(course) # this method also didn't helped me
- messages.success(request, 'student with name {} added.'.format(student.name))
- return redirect('students:add_student')
- else:
- # messages.error(request,'Error in form.Try again')
- return HttpResponse(form.errors) # this block is called and returns courses
- else:
- form = AddStudentForm()
- return render(request,'students/add_student.html',{'form':form,'courses':courses})
- <form action="{% url 'students:add_student' %}"
- method="post"
- enctype="multipart/form-data">
- {% csrf_token %}
- <div class="form-group">
- <h5>Full Name <span class="text-danger">*</span>
- </h5>
- <div class="controls">
- <input type="text" name="name" class="form-
- control" > </div>
- </div>
- <div class="form-group">
- <h5>Courses<span class="text-danger">*</span>
- </h5>
- <div class="controls">
- {% for course in courses %}
- <input name ="courses" type="checkbox" id="course-
- {{course.id}}" value="{{course.title}}">
- <label for="course-{{course.id}}">{{course.title}}
- </label>
- {% endfor %} # i think the problem is here.
- </div>
- </div>
- <div class="form-group">
- <h5>Email <span class="text-danger">*</span></h5>
- <div class="controls">
- <input type="text" name="email" class="form-
- control" required> </div>
- </div>
- </div>
- <div class="form-group">
- <h5>Image <span class="text-danger">*</span></h5>
- <div class="controls">
- <input type="file" name="image" class="form-control" > </div>
- </div>
- <div class="text-xs-right">
- <button type="submit" class="btn btn-info">Add</button>
- </div>
- </form>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement