Reputation: 111
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
//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
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.
this is the error i received
I hope you guys will help me with this problem. thanks
Upvotes: 0
Views: 88
Reputation: 1201
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()
Upvotes: 1