self.grade is PositiveIngegerField so at least the first part of this check is redundant