It may be too late to make these consistent w/ capa_module, but in that, attempts is the user's # of attempts (what you've called student_attempts) and max_attempts is this field. I might further ask if this should inherit from CapaFields, but it has a bunch of garbage which this probably doesn't want (perhaps a common superclass of fields). CapaXXX certainly has a distinct and overlapping set of logic around is graded, is resettable, and duplicates attempts, max_attempts, due, grace_period,