我很确定我的问题不明确,但我不知道该怎么说。
问题是:我有一个Task
模型和一个TaskHistory
模型。当我创建一个Task模型时,我想自动创建一个关联的TaskHistory
对象。
例如,我想在datetime.now()
创建一个值为“example”的任务,当我这样做时,会创建一个TaskHistory
对象,
created_on = datetime.now()
last_modification = datetime.now()
old_value = "example"
new_value = "example".
我可以在Task
模型的模型字段中执行此操作吗?
我是Django的新手。
编辑:这两个模型相互关联,如果TaskHistory
对象创建的话,那么task = Task
对象就会{{1}}。
答案 0 :(得分:2)
如果您指定的所有字段在TaskHistory模型上都可用,则可以覆盖create()
方法。
class Task(models.Model):
#other fields snipped for brevity
history = models.ForeignKey(TaskHistory)
@classmethod
def create(cls, *args, **kwargs):
task = cls(**kwargs)
history_kwargs = {'created_on':datetime.now(), 'last_modification':datetime.now(), 'old_value':'None', 'new_value': 'wee'}
history = TaskHistory(**history_kwargs)
history.save()
task.history = history
return task
并在您的视图中或您将其称为“
”task = Task.create(insert_values_here_for_Task)
task.save()
答案 1 :(得分:1)
答案 2 :(得分:0)
使用signals:
进行此操作from django.db.models.signals import post_save
from django.dispatch import receiver
from myapp.models import Task
@receiver(post_save, sender=Task)
def my_handler(sender, **kwargs):
task=sender
history_kwargs = {'created_on':datetime.now(), 'last_modification':datetime.now(), 'old_value':'None', 'new_value': 'wee'}
history = TaskHistory(**history_kwargs)
history.save()
task.history = history
task.save