Django версия 2.2
У меня есть модели в Джанго
class Class_teacher(models.Model):
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
empid = models.CharField(max_length=10)
standard = models.IntegerField()
division = models.CharField(max_length=1)
subject = models.CharField(max_length=200)
email = models.EmailField(max_length=30)
def __str__(self):
return self.first_name + ' -- ' + str(self.school)
class Student(models.Model):
first_name = models.CharField(max_length=200)
last_name = models.CharField(max_length=200)
classteacher = models.ForeignKey('Class_teacher', on_delete=models.CASCADE, )
reg_id = models.CharField(max_length=15)
parent_first_name = models.CharField(max_length=200)
parent_second_name = models.CharField(max_length=200)
email = models.EmailField(max_length=100)
def __str__(self):
return self.first_name + ' ' + self.last_name
просмотров для добавления студента
class StudentCreate(LoginRequiredMixin, CreateView):
login_url = '/signin/'
model = Student
fields = ['first_name', 'last_name', 'parent_first_name','parent_second_name', 'email', 'reg_id']
success_url = '/dashboard/'
Веб-приложение имеет функцию входа в систему, как показано ниже,
def signin(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
user = authenticate(username=username, password=password)
if user:
if user.is_active:
login(request, user)
return HttpResponseRedirect('../dashboard/')
else:
return HttpResponse("Your account was inactive.")
else:
return HttpResponse("Invalid login details given")
else:
return render(request, 'webapp/login.html')
def dashboard(request):
email = request.user.email
if Class_teacher.objects.filter(email__iexact=email).count() == 1:
students = Student.objects.values('classteacher')
context = { 'students' : students}
return render(request, 'webapp/dashboard.html',context)
шаблон dashboard.html
{% if students %}
<ol>
{% for student in students %}
<li>{{student.first_name}} {{student.last_name}}</li>
{% endfor %}
</ol>
{% else %}
<h3>No Students Added</h3>
{% endif %}
{% endblock %}
Я использовал students = Student.objects.values('classteacher')
, но он не предоставляет имена учеников, просто отображает упорядоченные номера списка.
У меня есть два требования
- У меня есть форма модели, в которой вошедший в систему учитель может добавлять учеников, в то время как я добавляю учеников, используя первое упомянутое выше представление, оно вызывает ошибку «Ограничение NOT NULL не выполнено: webapp.classteacher_id», и когда я изменяю представления добавления ниже это работает хорошо
class StudentCreate(LoginRequiredMixin, CreateView):
login_url = '/signin/'
model = Student
fields = ['first_name', 'last_name', 'parent_first_name','parent_second_name', 'email', 'reg_id' , 'classteacher']
success_url = '/dashboard/'
Что мне нужно в представлении studentadd, так это то, что ученики должны быть добавлены под соответствующим вошедшим учителем без предоставления значения учителя через форму
- После входа в систему на панели инструментов должны отображаться учащиеся соответствующего вошедшего в систему учителя