【问题标题】:not getting updated fields using django signals没有使用 django 信号获取更新的字段
【发布时间】:2019-06-21 03:29:57
【问题描述】:

我正在尝试使用 django 信号获取更新的字段。当我使用更新视图更新模型并调用 post_save 时,我在 kwargs 中将 update_fields 设置为 None。 如何使用 django 信号获取更新的字段?

信号.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',)

【问题讨论】:

  • 尝试更改为def department_history(sender, instance=Department(), created, update_fields, **kwargs): 并再次检查update_fields
  • 我还是没有
  • 试试这个:def department_history(sender, instance, created, **kwargs): if created: update = kwargs['update_fields']
  • 在更新过程中创建的是假的,只有在创建它是真的参考:-docs.djangoproject.com/en/2.1/topics/signals/…

标签: django django-signals


【解决方案1】:

只需更新views.py中的代码

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

可以使用 form.changed_data 获取更新的字段名称

【讨论】:

    猜你喜欢
    • 2020-08-13
    • 2021-06-08
    • 2021-02-23
    • 2014-11-16
    • 2021-02-11
    • 1970-01-01
    • 2018-07-26
    • 2019-07-19
    • 2021-11-19
    相关资源
    最近更新 更多