简体   繁体   English

Django model post_save

[英]Django model post_save

How do I insert new data to another models if the system detects the field is updated?如果系统检测到字段已更新,如何将新数据插入另一个模型? for example i have two models FmCustomerEmployeeSupplier and TrCustomerEmployeeSupplierSubmittedRecords , this is the model例如我有两个模型FmCustomerEmployeeSupplierTrCustomerEmployeeSupplierSubmittedRecords ,这是 model

//FmCustomerEmployeeSupplier //FmCustomerEmployeeSupplier

class FmCustomerEmployeeSupplier(models.Model):
    Pending_Request = [
        ('Active', 'Active'),
        ('Inactive', 'Inactive'),
    ]
    fmCustomerID = models.ForeignKey('FmCustomer',on_delete=models.SET_NULL, null=True, blank=True, verbose_name="Customer")
    email = models.CharField(max_length=500, blank=True, null=True)
    bodyTemperature = models.FloatField(null=True, blank=True)
    employee_number = models.CharField(max_length=500, blank=True, null=True)
    inputdate = models.DateField(auto_now_add=True)
    inputBy = models.CharField(max_length=500, blank=True)
    modifyDate = models.DateField(auto_now=True, blank=True, null=True)
    modifyBy = models.CharField(max_length=500, blank=True)
    status = models.CharField(max_length=500, null=True, choices=Pending_Request, blank=True)
    def clean_name(self):
        return self.cleaned_data["employee_number"].upper()
    def save(self, force_insert=False, force_update=False):
        self.employee_number = self.employee_number.upper()
        super(FmCustomerEmployeeSupplier, self).save(force_insert, force_update)
   super(TrCustomerEmployeeSupplierSubmittedRecords, self).save(force_insert, force_update) //I just add this line of code

    @property
        def is_past_due(self, *args, **kwargs):
            return date.today() > self.modifyDate

//TrCustomerEmployeeSupplierSubmittedRecords //TrCustomerEmployeeSupplierSubmittedRecords

class TrCustomerEmployeeSupplierSubmittedRecords(models.Model):
    Pending_Request = [
        ('Active', 'Active'),
        ('Inactive', 'Inactive'),
    ]
    fmCustomerID = models.ForeignKey('FmCustomer',on_delete=models.SET_NULL, null=True, blank=True, verbose_name="Customer")
    email = models.CharField(max_length=500, blank=True, null=True)
    bodyTemperature = models.FloatField(null=True, blank=True)
    employee_number = models.CharField(max_length=500, blank=True, null=True)
    inputdate = models.DateField(auto_now_add=True)
    inputBy = models.CharField(max_length=500, blank=True)
    modifyDate = models.DateField(auto_now=True, blank=True, null=True)
    modifyBy = models.CharField(max_length=500, blank=True)
    status = models.CharField(max_length=500, null=True, choices=Pending_Request, blank=True)

Storyline:故事情节:

the user updated the body temperature in FmCustomerEmployeeSupplier , i just want that in my models, i have a trigger when the system detect that the FmCustomerEmployeeSupplier updated, the record will insert in TrCustomerEmployeeSupplierSubmittedRecords .用户在FmCustomerEmployeeSupplier更新了体温,我只想在我的模型中,当系统检测到FmCustomerEmployeeSupplier更新时,我有一个触发器,记录将插入TrCustomerEmployeeSupplierSubmittedRecords

this is the error i received这是我收到的错误

在此处输入图像描述

I hope you guys will help me with this problem.我希望你们能帮助我解决这个问题。 thanks谢谢

在此处输入图像描述

I have done upto this for you.我已经为你做到了。

class FmCustomerEmployeeSupplier(models.Model):
    Pending_Request = [
        ('Active', 'Active'),
        ('Inactive', 'Inactive'),
    ]
    # fmCustomerID = models.ForeignKey('FmCustomer',on_delete=models.SET_NULL, null=True, blank=True,
    # verbose_name="Customer")
    email = models.CharField(max_length=500, blank=True, null=True)
    bodyTemperature = models.FloatField(null=True, blank=True)
    employee_number = models.CharField(max_length=500, blank=True, null=True)
    inputdate = models.DateField(auto_now_add=True)
    inputBy = models.CharField(max_length=500, blank=True)
    modifyDate = models.DateField(auto_now=True, blank=True, null=True)
    modifyBy = models.CharField(max_length=500, blank=True)
    status = models.CharField(max_length=500, null=True, choices=Pending_Request, blank=True)


class TrCustomerEmployeeSupplierSubmittedRecords(models.Model):
    Pending_Request = [
        ('Active', 'Active'),
        ('Inactive', 'Inactive'),
    ]
    fmCustomerID = models.OneToOneField(FmCustomerEmployeeSupplier, on_delete=models.CASCADE, null=True, blank=True,
                                        verbose_name="Customer")
    email = models.CharField(max_length=500, blank=True, null=True)
    bodyTemperature = models.FloatField(null=True, blank=True)
    employee_number = models.CharField(max_length=500, blank=True, null=True)
    inputdate = models.DateField(auto_now_add=True)
    inputBy = models.CharField(max_length=500, blank=True)
    modifyDate = models.DateField(auto_now=True, blank=True, null=True)
    modifyBy = models.CharField(max_length=500, blank=True)
    status = models.CharField(max_length=500, null=True, choices=Pending_Request, blank=True)

    def save(self, *args, **kwargs):
        print(**kwargs)
        if not self.bodyTemperature:
            if self._state.adding:
                self.bodyTemperature = self.fmCustomerID.bodyTemperature
        super(TrCustomerEmployeeSupplierSubmittedRecords, self).save(*args, **kwargs)


@receiver(post_save, sender=FmCustomerEmployeeSupplier)
def record_body(sender, instance, **kwargs):
    if not hasattr(instance, 'trcustomeremployeesuppliersubmittedrecords'):
        tr_csutomeremployee = TrCustomerEmployeeSupplierSubmittedRecords(bodyTemperature=instance.bodyTemperature)
        tr_csutomeremployee.save()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM