Это моя модель:
from django.db import models
from depot.models import Subject, Student
# Create your models here.
class Credit(models.Model):
subject = models.ForeignKey(Subject)
number = models.IntegerField()
first_level_questions = models.IntegerField(default=8)
second_level_questions = models.IntegerField(default=8)
third_level_questions = models.IntegerField(default=4)
class Question(models.Model):
credit = models.ForeignKey(Credit)
question = models.CharField(max_length=200)
level_choice = (
(1, u'1'),
(2, u'2'),
(3, u'3'),
)
level = models.IntegerField(choices=level_choice)
a = models.CharField(max_length=200, blank=True)
b = models.CharField(max_length=200, blank=True)
c = models.CharField(max_length=200, blank=True)
d = models.CharField(max_length=200, blank=True)
right_answer_choices = (
(1, u'a'),
(2, u'b'),
(3, u'c'),
(4, u'd'),
)
right_answer = models.IntegerField(choices=right_answer_choices, blank=True)
class Answer(models.Model):
question = models.ForeignKey(Question)
student = models.ForeignKey(Student)
answer = models.CharField(max_length=400)
right = models.BooleanField(default=None)
def __unicode__(self):
return self.answer
class Mark(models.Model):
student = models.ForeignKey(Student)
credit = models.ForeignKey(Credit)
total = models.IntegerField()
Это мой admin.py:
from django.contrib import admin
from credits.models import Credit, Question
class QuestionInline(admin.StackedInline):
model = Question
extra = 0
class CreditAdmin(admin.ModelAdmin):
list_display = ['subject', 'number']
inlines = [QuestionInline,]
admin.site.register(Credit, CreditAdmin)
Я решаю свою первую проблему. Спасибо.
Моя вторая проблема:
Я хочу иметь метод в моей модели марки.
Вы знаете, как:
def total_mark(self):
return Answer.objects.filter(student=self.student, right=True).count()
А как же кредит? Мне нужны оценки точного студента и точного кредита.