который час бьюсь над, вроде бы простой проблемой, но никак не могу понять как ее реализовать...
собственно есть модели
class Question(models.Model):
question_text=models.TextField(_("Question text"))
.......
def __unicode__(self):
return u'(%s) %s' % (self.pk, self.question_text)
class QuestionAnswer(models.Model):
question_id=models.ForeignKey(Question, verbose_name=_('Question'))
question_answer_text=models.TextField(_("Answer text"))
is_this_answer_right=models.BooleanField()
answer_sort = models.PositiveIntegerField(blank="true", null="true")
class Meta:
ordering = ['answer_sort']
def __unicode__(self):
return u'%s - %s' % (self.answer_sort, self.question_answer_text)
в админке заполнение ответов выведено вместе с вопросами (логично и очевидно)
class QuestionAnswerInline(admin.TabularInline):
model = QuestionAnswer
formset = SetTestQuestionAnswerFormSet
fields = ('answer_sort','question_answer_text', 'is_this_answer_right')
readonly_fields = ('answer_sort',)
def get_extra(self, request, obj=None, **kwargs):
extra = 4
if obj:
return extra - obj.question_answer_set.count()
return extra
class QuestionAdmin(admin.ModelAdmin):
fieldsets = [
.........
]
inlines = [QuestionAnswerInline]
admin.site.register(Question, QuestionAdmin)
поле answer_sort
заполняется посредством переопределения метода clean()
формы :
class SetTestQuestionAnswerFormSet(BaseInlineFormSet):
def clean(self):
super(SetTestQuestionAnswerFormSet, self).clean()
i = 1
for form in self.forms:
if not hasattr(form, 'cleaned_data'):
continue
data = form.cleaned_data
form.instance.answer_sort = i
i += 1
return data
при таком определении в админке при первичном создании вопроса с ответами ответы не пронумерованы ...
Как сделать так, что бы при первичном создании создатель видел нумерацию ответов от 1 до n сколько ему понадобиться ( и соответственно, при нажатии на кнопку "добавить еще ответ" нумерация ответов сразу показывала следующий номер? при этом нужно сохранить эту нумерацию, сделать по ней сортировку по умолчанию (для того что бы можно было задать ответ типа "все вышеперечисленные")
Updated 25 April 2016, 12:29 by Origin.