当DjangoAdmin创建对象时,从不同模型复制值

时间:2015-10-19 15:59:39

标签: django

我有两种模式:

class Object(models.Model):
    object = models.CharField()
    price = models.DecimalField()

class History(models.Model):
    date = models.DateTimeField()
    object= models.ForeignKey(Object)
    price = models.DecimalField()

当我创建新的历史记录条目时,我想将实际价格从对象复制到历史记录模型。
我怎样才能做到这一点?需要我在视图中使用特定方法吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Django的post-save signal

创建信号接收器:

# models.py

def history_add_price(sender, instance, **kwargs):
    if not instance.price and instance.object and instance.object.price:
        instance.price = instance.object.price
        instance.save()
    return True

注册信号:

# models.py
from django.db import models 

models.signals.post_save.connect(history_add_price, sender=History, dispatch_uid="add_price_post_save", weak=False)