Apr-24-2022, 12:34 PM
Hello
I have a Django model class as:
The app runs under docker. After data was populated by some csv files, the table deliveryupdate is created with fields delivery_id and field_updates (there is no delivery_address field in this table)
In a utils.py code, I saw there is the codes to return a delivery_address as:
Look around, I could see a related class as:
I am new to Python and Django, could you please explain why delivery_address is returned when setter function is not called. Some magic things happen here ???
Many thanks
I have a Django model class as:
from django.db import models class DeliveryUpdate(models.Model): delivery_id = models.CharField(max_length=32, blank=False, unique=True) field_updates = JSONField() @property def delivery_address(self): return self.delivery_address_ref @delivery_address.setter def delivery_address(self, value): # Line 15 print ("At the setter for delivery_address") #To check if this function is called self.delivery_address_ref = value
The app runs under docker. After data was populated by some csv files, the table deliveryupdate is created with fields delivery_id and field_updates (there is no delivery_address field in this table)
In a utils.py code, I saw there is the codes to return a delivery_address as:
delivery_id = "xzy" delivery_update = DeliveryUpdate.objects.get(delivery_id=delivery_id) delivery_address = delivery_update.delivery_address #line 27 print (str(delivery_address)) # I could see a valid delivery_address hereI do not understand here is how the value for delivery_update.delivery_address is returned (line 27) when the setter function is NOT called (eg: line #15 delivery_address(self, value)). In another word, I could not find the printout string "At the setter for delivery_address".
Look around, I could see a related class as:
class DeliveryAddress(models.Model): ... delivery_update = models.OneToOneField( 'DeliveryUpdate', db_column='delivery_update', to_field='delivery_id', related_name='delivery_address_ref', on_delete=models.CASCADE, max_length=32 ) ...I also saw the table deliveryaddress is created.
I am new to Python and Django, could you please explain why delivery_address is returned when setter function is not called. Some magic things happen here ???
Many thanks