AnswerFormSet = inlineformset_factory( #this will be an instance of the form Question, # parent model Answer, # base model or child model formset=BaseAnswerInlineFormSet, fields=('text', 'is_correct'), min_num=2, validate_min=True, max_num=10, validate_max=True )
class BaseAnswerInlineFormSet(forms.BaseInlineFormSet): def clean(self): super().clean()
has_one_correct_answer = False for form in self.forms: if not form.cleaned_data.get('DELETE', False): if form.cleaned_data.get('is_correct', False): has_one_correct_answer = True break
if not has_one_correct_answer: raise ValidationError('Mark at least one answer as correct.', code='no_correct_answer')