0

I am trying to fetch the updated fields using django signals.when i update the model using update view and call the post_save i get the update_fields as None in the kwargs. How to get the updated fields using django signals ??

signals.py

from .models import Department
from django.db.models.signals import post_save
from django.dispatch import receiver

@receiver(post_save, sender=Department)
def department_history(sender, created, **kwargs):
 update = kwargs['update_fields']

views.py

class DepartmentEditView(LoginRequiredMixin, SuccessMessageMixin,PermissionRequiredMixin, UpdateView):

model = Department
form_class = DepartmentForm
success_url = reverse_lazy('departments:departments')
success_message ="%(department_name)s was Updated Sucessfully "
template_name_suffix = '_update'
permission_required = ('departments.change_department',)
beginners
  • 305
  • 3
  • 16
  • try change to `def department_history(sender, instance=Department(), created, update_fields, **kwargs):` and check `update_fields` again – Ngoc Pham Jan 28 '19 at 06:51
  • i still get None – beginners Jan 28 '19 at 07:03
  • try this: `def department_history(sender, instance, created, **kwargs): if created: update = kwargs['update_fields'] ` – Ahtisham Jan 28 '19 at 07:18
  • during update the created is False only in create it is True refer:- https://docs.djangoproject.com/en/2.1/topics/signals/#defining-and-sending-signals – beginners Jan 28 '19 at 07:25

1 Answers1

0

just update the code in views.py

def form_valid():
    obj=form.save(commit=False)
    obj.save(update_fields=['field_name'])

updated field name can be get using form.changed_data

beginners
  • 305
  • 3
  • 16