我想在我的一个模特中创建一个变化的历史。每当我更新它时,当前数据将保存到不同的表中,同时新数据将进入另一个表。我怎么能这样做?我看到了一些示例,它们都来自管理员。但我仍然不知道它。这可能是一个noob问题,但我还在学习Django。
models.py
class tblTicket(models.Model): #new data will be entered here
remarks = models.TextField("Action Taken", max_length=500,default='')
class LogChanges(models.Model): #table to save the changes
prevRemarks = models.CharField(max_length=500,default='')
forms.py
class troubleTicket(ModelForm):
class Meta:
model = tblTicket
fields = '__all__'
class history(ModelForm):
class Meta:
model = LogChanges
fields = '__all__'
views.py
def updateTicket(request, ticket_id):
ticketDetails=tblTicket.objects.get(id=ticket_id)
updateTicketForm = troubleTicket(request.POST or None,instance=ticketDetails)
if updateTicketForm.is_valid():
updateTicketForm.save()
return HttpResponseRedirect('/ticket/')
return render(request,'updateTicket.html', {'updateTicketForm':updateTicketForm,'ticketDetails':ticketDetails,'ticket_id':ticket_id})
我正在使用django 1.8.3
更新
我找到了与我的问题相关的链接。但它给了我一个错误NameError: name 'tblTicket' is not defined
def make_copy(sender, **kwargs):
obj = kwargs['instance']
try:
orig_obj = tblTicket.objects.get(pk=obj.pk)
except: #If it is a new object
orig_obj = None
pre_save.connect(make_copy, sender=tblTicket) <- this is where the error leads me
据我所知,在这个link中,国家有模型。所以我将它切换到我的模型tblTicket
。我不明白为什么它没有被定义。
答案 0 :(得分:1)
c听起来你想覆盖tblTicket模型的save方法,以便创建一个新的LogChanges对象。像这样......
class tblTicket(models.Model):
...
def save(self):
super(tblTicket, self).save()
LogChanges.objects.create(prevRemarks=self.remarks)