Да, вы можете сделать валидацию полей формы в админ панели Django. Для этого вам нужно будет использовать специальный класс ModelForm и переопределить метод clean() для проверки полей формы.
Например:
class AnswerForm(forms.ModelForm):
class Meta:
model = Answers
fields = ('question_id', 'aswer_text', 'true_answer',)
readonly_fields = ('question_id',)
def clean(self):
cleaned_data = super().clean()
true_answer = cleaned_data.get("true_answer")
if true_answer:
# Проверяем, что у других ответов не установлен чекбокс "Верный ответ"
answers = Answer.objects.filter(question_id=cleaned_data.get("question_id"))
for answer in answers:
if answer.true_answer:
raise ValidationError("Нельзя установить более одного верного ответа")
return cleaned_data
class AnswerAdm(admin.StackedInline):
form = AnswerForm
model = Answers
fields = ('question_id', 'aswer_text', 'true_answer',)
readonly_fields = ('question_id',)
class TestquestionAdmin(admin.ModelAdmin):
list_display = ('question_id', 'test_id', 'question_text',)
list_display_links = ('question_id',)
inlines = [AnswerAdm, ]