Задать вопрос
Ответы пользователя по тегу Django
  • Как сделать валидацию в админ панели django?

    ma4akk
    @ma4akk
    Да, вы можете сделать валидацию полей формы в админ панели 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, ]
    Ответ написан
    1 комментарий