прочитал доку, спасибо!
далее появился вопрос про дополнительные проверки и переопределения метода clean()
class SetTestQuestionGroupAndCountForm(forms.ModelForm):
def clean(self):
cleaned_data = super(SetTestQuestionGroupAndCountForm, self).clean()
qgcount = cleaned_data.get("set_test_question_group_count")
i=0
group_query = cleaned_data.get('set_test_question_group_id')
allquestions = Question.objects.all().filter(question_group=group_query)
for q in allquestions:
i=i+1
if qgcount > i:
raise forms.ValidationError(_('Question count:%(value1)s is not valid. There is:%(value2)s questions in group'), params={'value1': qgcount,'value2': i},)
return cleaned_data
эта проверка работает, эта проверка определяет общее количество вопросов в группе, и сверяет с введенными данными. Далее есть другая форма, частью которой является предыдущая.
class SetTestNameForm(forms.ModelForm):
def clean(self):
cleaned_data = super(SetTestNameForm, self).clean()
qcount = cleaned_data.get("set_test_questions_count")
# вопрос вот тут: как достать вопросы из маленьких форм, входящих в мою большую? то, что я написал 100% неверно
xcount = cleaned_data.get("set_test_question_group_count")
#тут нужно сложить вопросы в группах
if qcount > xcount:
raise forms.ValidationError(_('Question count:%(value1)s is not valid. There is:%(value2)s questions in group'), params={'value1': qcount,'value2': xcount},)
return cleaned_data
Как обратиться к полям формы? и еще приложу admin.py
class Set_Test_Question_Group_CountInline(admin.TabularInline):
model=Set_Test_Question_Group_Count
extra=5
form = SetTestQuestionGroupAndCountForm
class Set_Test_NameAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['set_test_name']}),
(None, {'fields': ['set_test_time']}),
(None, {'fields': ['set_test_success_count']}),
(None, {'fields': ['set_test_questions_count']}),
]
inlines = [Set_Test_Question_Group_CountInline]
form = SetTestNameForm
admin.site.register(Set_Test_Name, Set_Test_NameAdmin)