【发布时间】:2021-01-30 23:50:18
【问题描述】:
我正在尝试为学生制作结果应用程序,有两种型号,一种用于科目,一种用于课程,每门课程都有不止一个具有学科学分的学科,所以我想总结所有学科学分取决于课程,现在我正在获得单门课程的总科目学分,但是是否有可能获得所有课程的科目总学分?因为他/她可以有不止一门课程。例如一门课程的科目总学分 = 12 另一门学分 = 8 .......所以总学分 = 20 学分请看图片 以及第二个图像模型设计的更好方法
models.py
class Subject(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
name = models.CharField(max_length=50)
code = models.PositiveIntegerField(unique=True)
credit = models.IntegerField(blank=True)
files = models.FileField(upload_to='course/materials/', blank=True)
status = models.CharField(max_length=15, choices=Subject_Status, blank=True)
def __str__(self):
return self.name
class Meta:
db_table = ''
managed = True
verbose_name = 'Subject'
verbose_name_plural = 'Subjects'
class Course(models.Model):
user = models.ForeignKey(
settings.AUTH_USER_MODEL, on_delete=models.CASCADE, null=True)
name = models.CharField(max_length=200, unique=True)
prefix = models.CharField(max_length=20)
code = models.CharField(max_length=20)
subject = models.ManyToManyField('Subject', related_name='subject_list', blank=True)
faield = models.ManyToManyField(Subject,related_name='failed_subject_status', blank=True)
passed = models.ManyToManyField(Subject,related_name='passed_subject_status', blank=True)
nerver = models.ManyToManyField(Subject,related_name='never_subject_status', blank=True)
current = models.ManyToManyField(Subject,related_name='curent_subject_status', blank=True)
program = models.ForeignKey('Program', related_name='program_course', on_delete=models.CASCADE,
blank=True, null=True)
views.py
class Program_structure(generic.View):
def get(self, *args, **kwargs):
profile = Student.objects.all()
program_structure = Course.objects.filter(user=self.request.user)
credit =
Course.objects.filter(user=self.request.user).annotate(total_credit=Sum('subject__credit'))
context = {
'test':program_structure,
'credit':credit, #this is giving single course total
'profile':profile,
}
return render(self.request, 'test.html', context)
【问题讨论】:
标签: python python-3.x django django-models django-views