2015-06-05 3 views
0

Речь идет о части admin части django. Есть три модели в models.py файле:admin: переопределить действие «save»

class In(models.model): 
    id = models.CharField(verbose_name=_("id"),max_length=20,primary_key=True) 
    num = models.IntegerField(verbose_name=("number")) 

class Storage(models.model): 
    id = models.CharField(verbose_name=_("id"),max_length=20,primary_key=True) 
    num = models.IntegerField(verbose_name=("number")) 

class Out(models.model): 
    id = models.CharField(verbose_name=_("id"),max_length=20,primary_key=True) 
    num = models.IntegerField(verbose_name=("number")) 

Я уже зарегистрировал их в admin.py файле:

admin.site.register(In) 
admin.site.register(Storage) 
admin.site.register(Out) 

Я надеюсь, что:

  1. , когда пользователь щелкает save или save and add another или save and continue editing в форме In, django не только сохранит данные формы в In, но и сохранить данные в классе Storage.

  2. Когда пользователь щелкает save или save and add another или save and continue editing в Out форме, Джанго не только сохранить данные формы в Out классе, но и посмотреть на тот же идентификатор в Storage классе, и вычитать num в Out от num в Storage за тот же идентификатор.

Например, в In форме, данные id=1, num=3 пользователь вводит, и save, данные будут храниться в обоих In и Storage, то в Out форме, данные пользователь вводит id=1, num=1 и save, тем данные будут храниться в Out, а данные в классе Storage станут id=1, num=2.

Как это сделать?

ответ

1

post_save() signal подходит для того, чего вы пытаетесь достичь. Они будут запускаться каждый раз, когда объект будет сохранен. Подключите их в In и Out и обновите Storage по мере необходимости.

Смежные вопросы