LINUX.ORG.RU

admin.ModelAdmin свое сохранение модели

 ,


0

1

Есть две модели:

class Round(models.Model):
    round = models.IntegerField(verbose_name=_(u'Round'))


class Match(models.Model):
    RESULT_CHOICES = (
        (0, _(u'Waiting for game')),
        (1, _(u'First player winner')),
        (2, _(u'Second player winner')),
        (3, _(u'Draw')),
    )
    round = models.ForeignKey(Round)
    result = models.IntegerField(verbose_name=_(u'Result'), default=0,
        choices=RESULT_CHOICES)
    is_close = models.BooleanField(default=False, editable=False)

Добавляем admin.py

class MatchInline(admin.StackedInline):
    model = Match
    extra = 0


class RoundAdmin(admin.ModelAdmin):
    inlines = [MatchInline]

    def save_model(self, request, obj, form, change):
        for match in obj.match_set.all():
            print match.is_close, match.result
            if not match.is_close and match.result != 0:
                match.is_close = True
                match.save()

        obj.save()

Ситуация такая, выставляю в админке значение поля result отличное от 0, сохраняю. Мое сохранение не срабатывает т.к. match_set еще не сохранен и конечно же при повторном сохранение все сработает как надо, но нужно с первого.. Не могу разобраться как это сделать.


Решил вопрос перегрузкой метода save() у модели.

Gr1N
() автор топика
Ответ на: комментарий от Gr1N

commit=False для форм. я тоже с таким сталкнулся, но уже не помню как выкрутился. наверное, тоже save перекрыл.

fuxter
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.