admin:覆盖“保存”操作

时间:2015-06-05 15:38:40

标签: python django

这是关于django的admin部分。 models.py文件中有三个模型:

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 anothersave and continue editingIn时,django不仅会将表单数据保存在In中} class,但也保存Storage类中的数据。

  2. 当用户点击save表单中的save and add anothersave and continue editingOut时,django不仅会将表单数据保存在{{1}中},但也要在Out类中查找相同的ID,并在StoragenumOut减去num中相同ID的Storage。{ / p>

  3. 例如,在In表单中,用户输入数据id=1, num=3save,数据将存储在InStorage中,然后在Out表单中,用户输入数据id=1, num=1save,数据将存储在Out中,Storage类中的数据将变为id=1, num=2

    如何做到这一点?

1 个答案:

答案 0 :(得分:1)

post_save() signal非常适合您要实现的目标。每次保存对象时都会触发它们。将它们连接到InOut,然后根据需要更新Storage