我需要 django 的帮助
I need help in django
我想在第一学期打印第一学期的科目,在第二学期打印第二学期的科目等等。看这张照片
cick in image here
也许 views.py 中有一些我没有想到的逻辑 rn.Can 有人帮助我了解这个逻辑以及如何在 semester.html 中呈现它第页
我的代码在这里。
models.py
from django.db import models
from django.db.models.base import ModelState
# Create your models here.
class Course(models.Model):
faculty = models.CharField(max_length=100)
class Semester(models.Model):
sem = models.CharField(max_length=100)
faculty = models.ForeignKey(Course, on_delete=models.CASCADE)
def __str__(self):
return F"Semester {self.sem} at Faculty {self.faculty}"
class Subject(models.Model):
faculty = models.ForeignKey(Course, on_delete=models.CASCADE)
sem = models.ForeignKey(Semester, on_delete=models.CASCADE)
subject_name = models.CharField(max_length=100)
def __str__(self):
return str(self.id)
views.py
from django.shortcuts import render
from django.views import View
from django.contrib import messages
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, UsernameField
from django import forms
from django.utils.translation import gettext, gettext_lazy as _
from .forms import CustomerRegistrationForm
from .models import Course, Semester, Subject
# Create your views here.
def home(request):
return render(request, 'app/home.html')
def faculty(request):
course = Course.objects.all()
return render(request, 'app/faculty.html', {'course':course})
class SemesterView(View):
def get(self, request,id):
obj = Course.objects.get(id=id)
print(obj)
semobj = Semester.objects.filter(faculty=obj)
print(semobj)
subobj = Subject.objects.filter(faculty=obj)
print(subobj)
return render(request, 'app/semester.html', {'obj':obj, 'semobj':semobj, 'subobj':subobj})
semester.html
{% extends 'app/base.html' %}
{% load static %}
{% block semester %}
<div class="bsc-csit">
<div class="container">
<div class="row" style="margin-top:90px; padding-top:20px;">
{% for so in semobj %}
<div class="col-md-3">
<div class="bsccsit-box">
<h3 style="color: black">{{so.sem}}</h3>
<ul>
{% for suo in subobj %}
<li><a href="">1.{{suo.subject_name}}</a></li>
{% endfor %}
</ul>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock semester %}
尝试替换模板中的以下内容:
{% for subject in so.subject_set.all %}
<li><a href="">{{ forloop.counter }}. {{subject.subject_name}}</a></li>
{% endfor %}
您可以通过 subject_set.all
获取特定学期的所有 Subject
。
您还可以使用 {{ forloop.counter }}
提供带有相关主题的枚举数。
我想在第一学期打印第一学期的科目,在第二学期打印第二学期的科目等等。看这张照片 cick in image here
也许 views.py 中有一些我没有想到的逻辑 rn.Can 有人帮助我了解这个逻辑以及如何在 semester.html 中呈现它第页 我的代码在这里。
models.py
from django.db import models
from django.db.models.base import ModelState
# Create your models here.
class Course(models.Model):
faculty = models.CharField(max_length=100)
class Semester(models.Model):
sem = models.CharField(max_length=100)
faculty = models.ForeignKey(Course, on_delete=models.CASCADE)
def __str__(self):
return F"Semester {self.sem} at Faculty {self.faculty}"
class Subject(models.Model):
faculty = models.ForeignKey(Course, on_delete=models.CASCADE)
sem = models.ForeignKey(Semester, on_delete=models.CASCADE)
subject_name = models.CharField(max_length=100)
def __str__(self):
return str(self.id)
views.py
from django.shortcuts import render
from django.views import View
from django.contrib import messages
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm, UsernameField
from django import forms
from django.utils.translation import gettext, gettext_lazy as _
from .forms import CustomerRegistrationForm
from .models import Course, Semester, Subject
# Create your views here.
def home(request):
return render(request, 'app/home.html')
def faculty(request):
course = Course.objects.all()
return render(request, 'app/faculty.html', {'course':course})
class SemesterView(View):
def get(self, request,id):
obj = Course.objects.get(id=id)
print(obj)
semobj = Semester.objects.filter(faculty=obj)
print(semobj)
subobj = Subject.objects.filter(faculty=obj)
print(subobj)
return render(request, 'app/semester.html', {'obj':obj, 'semobj':semobj, 'subobj':subobj})
semester.html
{% extends 'app/base.html' %}
{% load static %}
{% block semester %}
<div class="bsc-csit">
<div class="container">
<div class="row" style="margin-top:90px; padding-top:20px;">
{% for so in semobj %}
<div class="col-md-3">
<div class="bsccsit-box">
<h3 style="color: black">{{so.sem}}</h3>
<ul>
{% for suo in subobj %}
<li><a href="">1.{{suo.subject_name}}</a></li>
{% endfor %}
</ul>
</div>
</div>
{% endfor %}
</div>
</div>
</div>
{% endblock semester %}
尝试替换模板中的以下内容:
{% for subject in so.subject_set.all %}
<li><a href="">{{ forloop.counter }}. {{subject.subject_name}}</a></li>
{% endfor %}
您可以通过 subject_set.all
获取特定学期的所有 Subject
。
您还可以使用 {{ forloop.counter }}
提供带有相关主题的枚举数。